本次搭建OWASP靶機(jī)中自帶的DWVA靶機(jī)對(duì)文件包含測(cè)試
Simple級(jí)別
源代碼查看
<?php
$file = $_GET['page']; //The page we wish to display
?>
To include a file edit the ?page=index.php in the URL to determine which file is included.
根據(jù)源代碼查看與頁(yè)面提示,在URL中的關(guān)鍵參數(shù)page通過GET的方法來(lái)進(jìn)行文件包含測(cè)試。
嘗試通過包含常用驗(yàn)證文件phpinfo或passwd文件進(jìn)行測(cè)試
Simple級(jí)別文件包含測(cè)試
由于從提供的源代碼可以知道膳叨,并未對(duì)傳入的參數(shù)進(jìn)行任何過濾,所以可直接進(jìn)行任意文件包含鲸阔,但是同樣對(duì)于讀取權(quán)限有要求偷霉,例如將/etc/passwd權(quán)限進(jìn)行修改進(jìn)行測(cè)試
權(quán)限修改
完成權(quán)限修改后,在此進(jìn)行包含測(cè)試
修改權(quán)限后進(jìn)行包含
可以看到雖然對(duì)/etc/passwd進(jìn)行包含褐筛,但是無(wú)法進(jìn)行相關(guān)敏感信息讀取
类少,所以對(duì)于文件包含的方法的一種防御方式就是對(duì)權(quán)限的嚴(yán)格控制
Medium級(jí)別
源代碼查看
<?php
$file = $_GET['page']; // The page we wish to display
// Bad input validation
$file = str_replace("http://", "", $file);
$file = str_replace("https://", "", $file);
?>
根據(jù)源代碼分析,對(duì)http和https關(guān)鍵詞進(jìn)行了簡(jiǎn)單過濾渔扎,無(wú)法包含外部頁(yè)面硫狞,但是依舊可以通過目錄遍歷的方式來(lái)包含服務(wù)器內(nèi)部相關(guān)文件
對(duì)https://www.bing.com進(jìn)行編碼測(cè)試
URL編碼
URL16進(jìn)制加密
-
%68%74%74%70%73%3A%2F%2F%63%6e%2e%62%69%6e%67%2e%63%6f%6d
Bypass失敗
利用替換的原則,可以進(jìn)行拼湊晃痴,能夠在進(jìn)行過濾后残吩,又能夠湊出來(lái)http或https
- hthttp://tps://
- hhttp://ttps://
- htthttp://ps://
- httphttp://s://
- httpshttp://://
- https:http:////
- https:/http:///
為了展示輸入輸入過濾后的效果,修改源代碼倘核,添加輸出行
修改源代碼
對(duì)測(cè)試代碼進(jìn)行測(cè)試
測(cè)試效果
嘗試通過http來(lái)獲取文件包含.viminfo測(cè)試
Bypass測(cè)試
High級(jí)別
源代碼查看
$file = $_GET['page']; //The page we wish to display
// Only allow include.php
if ( $file != "include.php" ) {
echo "ERROR: File not found!";
exit;
}
代碼使用了白名單機(jī)制進(jìn)行防護(hù),只有傳入的內(nèi)容符合指定的內(nèi)容泣侮,才可進(jìn)行包含處理。
常見敏感信息
- Windows
- C:\boot.ini 查看系統(tǒng)版本
- C:\windows\system32\inetsrv\MetaBase.xml 查看IIS配置文件
- C:\windows\repair\sam 查看存儲(chǔ)Windows系統(tǒng)初次安裝的密碼
- C:\ProgramFiles\Mysql\my.ini 查看MySQL配置
- C:\ProgramFiles\mysql\data\mysql\user.MYD 查看MySQLroot密碼
- C:\windows\php.ini 查看php配置信息
- Linux
- /etc/passwd 查看賬戶信息
- /etc/shadow 查看密碼文件
- /usr/local/app/apache2/conf/http.conf 查看Apache2配置文件
- /usr/local/app/conf/extra/http-vhost.conf 查看虛擬網(wǎng)站配置
- /usr/local/app/php5/lib/php.ini 查看php相關(guān)配置
- /etc/httpd/conf/httpd.conf 查看Apache配置文件
- /etc/my.conf 查看MySQL配置文件
防御方法總結(jié)
- 不要使用動(dòng)態(tài)包含紧唱,可以在需要包含的頁(yè)面固定寫好
- 白名單機(jī)制
- 參數(shù)禁止外部可控
- 路徑限制 一定要禁止目錄跳轉(zhuǎn)字符活尊,如:“../”,“./”
參考資料
- 博客園 文件包含漏洞整理
- FreeBuf 文件包含漏洞的利用及防御方案
- CSDN 滲透測(cè)試技術(shù)----常見web漏洞--文件包含攻擊原理及防御