web-檔案上傳漏洞總結
思維導圖:
一,js驗證繞過
1.我們直接刪除程式碼中onsubmit事件中關於檔案上傳時驗證上傳檔案的相關程式碼即可。
或者可以不載入所有js,還可以將html原始碼copy一份到本地,然後對相應程式碼進行修改,本地提交即可。
2.burp改包,由於是js驗證,我們可以先將檔案重新命名為js允許的字尾名,在用burp傳送資料包時候改成我們想要的字尾。
二,服務端驗證繞過
黑名單
1.上傳特殊可解析字尾
可以使用php345,phtml,PHP,phP,等
2.上傳.htaccess
我們需要上傳一個.htaccess檔案,內容為:
SetHandler application/x-httpd-php
上傳該apache配置檔案,會修改apache的配置,使後面上傳的檔案都會被看成php檔案執行,所以直接上傳圖片一句話木馬
3.字尾大小寫繞過
字尾名改為PHP即可
4.空格繞過
黑名單沒有對檔案中的空格進行處理,使用burpsuite擷取資料包,在上傳檔案字尾名中加空格繞過。
5.點繞過$
windows會對檔案中的點進行自動去除,所以可以在檔案末尾加點繞過,使用burpsuite抓包在上傳檔案字尾名中加點繞過
6.::$DATA繞過(windows)
使用burpsuite抓包在上傳檔案字尾名中加 ::$DATA繞過,使用burpsuite抓包在上傳檔案字尾名中加::$DATA繞過,1.php::$DATA ==》1.php
7.路徑拼接繞過
可以構造檔名1.PHP. . (點+空格+點),經過處理後,檔名變成1.PHP.,即可繞過。
8.雙寫繞過
可以採用雙寫繞過:1.pphphp,使用burpsuite抓包在上傳檔案字尾名該為pphphp
9. 配合解析漏洞,
如apache,1.php.xxx,apache會將該檔案字尾名解析為1.php執行
如iis6,使用burpsuite抓包,修改upfile為 。。/1.asp/
目錄解析(6.0)
形式:www.xxx.com/xx.asp/xx.jpg 原理: 伺服器預設會把.asp,.asp目錄下的檔案都解析成asp檔案。
檔案解析
如:使用burpsuite抓包,修改upfile為
形式:www.xxx.com/xx.asp;.jpg 原理:伺服器預設不解析;號後面的內容,因此xx.asp;.jpg便被解析成asp檔案了。 解析檔案型別
IIS6.0 預設的可執行檔案除了asp還包含這三種 :
1. /test.asa
2./test.cer
3./test.cdx
三,白名單繞過
1.mime繞過
通過burpsuite抓包比較上傳正常jpg和非法檔案php的Content-type的區別
2.%00 截斷
使用burpsuite自帶工具將00%轉換為url編碼,如:filename=“1.jpg00%” ==》burpsuite編碼後變成1.jpg,forward上傳
3.檔案幻數檢測繞過
在木馬內容的前面插入對應的檔案頭內容,例如:GIF89a ,更保險的方法是在可上傳的檔案中插入木馬程式碼,然後修改後綴
4.二次渲染繞過
通過例如載入檔案進行影象渲染的方式來測試,這個時候就一般需要在正常的檔案中插入木馬程式碼了,例如影象,那麼插入的程式碼一般會放在影象的註釋區,因此不會影響影象正常渲染繞過這種檢測,此時可以使用工具(稱為插馬器)來進行插入,例如edjpgcom,或者直接用copy命令來合成也可以。當然這種檢測不一定能夠完全繞過
5.條件競爭
這裡先將檔案上傳到伺服器,然後通過rename修改名稱,再通過unlink刪除檔案,因此可以通過條件競爭的方式在unlink之前,訪問webshell。
&n