文件上傳是Web網頁中常見的功能之一,通常情況下惡意的文件上傳,會形成漏洞。
邏輯是這樣的:用戶通過上傳點上傳了惡意文件,通過服務器的校驗后保存到指定的位置。
當用戶訪問已經上傳成功的文件時,上傳的Web腳本會被Web容器進行解析,從而對網站造成危害。
今天我們來研究下Upload-labs靶場的每關不同的攻略,從而對文件上傳進行深入的了解。
Pass-1
前端JS驗證
編寫一句話木馬文件a.php,並將文件名修改尾a.jpg。上傳后抓包修改為a.php。
即可上傳成功。
Pass-2
MIME驗證,Burp抓包,修改Conetent-type為image/png.
即可上傳成功
Pass-3
禁止了php,jsp,asp等后綴。大小寫繞過失敗,修改為php5后綴。
即可上傳成功
Pass-4
先上傳.htaccess系統解析文件進行重寫
內容如下
<FileMatch "1.jpg">
SetHandler application/x-httpd-php
</FileMatch>
再上傳包含一句話木馬的1.jpg,此時網站將把1.jpg當作php文件進行解析執行。
Pass-5
大小寫繞過,修改后綴為.Php5
即可上傳成功
Pass-6
空格繞過,空格編碼后形成00,進行繞過。
在1.php Burp抓包尾椎添加空格即可。
Pass-7
尾綴.添加.,即在1.php后添加.,修改為1.php.進行繞過
Pass-8
尾綴添加::$DATA,形成NTFS寫入文件的效果,進行繞過
Pass-9
尾綴添加. .,類似於雙寫繞過,只過濾了一次.和一次的空格。
Pass-10
直接上傳發現1.php 被修改為1. ,對敏感詞匯進行了替換
嘗試進行雙寫繞過將1.php,修改為1.pphphp,進行繞過
總結:前十關我們可以總結如下幾種文件上傳繞過的方式。
1.前端JS驗證:Burpsuite抓包修改尾綴
2.MIME驗證:Burpsuite抓包修改Content-type
3.黑名單驗證:Burpsuite抓包進行文件尾綴的爆破
4.解析文件可重寫:重寫解析文件,將JPG文件解析為PHP文件進行執行
5.大小寫繞過、雙寫繞過