文件上傳漏洞總結php
漏洞位於:只要能上傳文件的地方皆有可能出現文件上傳漏洞html
尋找漏洞:尋找能上傳文件的地方,文本編譯器前端
攻擊方法:任意文件上傳,後綴大小寫繞過,文件類型繞過,雙寫後綴名繞過,請求特殊後綴繞過,圖片木馬合併上傳,文件00截斷繞過,截斷攻擊%和&,web服務器環境配置尋找漏洞 例如:IIS6.0的解析漏洞web
任意文件上傳:shell
直接上傳沒有任何防護措施apache
後綴大小寫繞過(成功機率很小,暫時沒有成功過)服務器
例子:shell.php 改成:shell.Php, shell.pHp, shell.PHPjsp
文件類型繞過:post
如今大部分都進行了文件類型判斷,經過Content-type頭判斷測試
這裏拿DVWA的中級防護來進行示範
Php代碼:
直接上傳百分百失敗,先把1.php改成1.jpg。上傳的時候用burpsuite截斷,將1.jpg改成1.php
便可繞過此防護。
符合條件,因此上傳成功。
雙寫後綴名繞過:
例子:shell.jpg 變爲jsp則 shell.jspsp
Shell.jpg 變爲 php 則 shell.jphphp
.........
雙寫後綴名繞過雖然能夠上傳成功可是,沒法鏈接到菜刀,全部
只能用於惡意上傳並不能獲取服務器權限。
特殊後綴名上傳:
將上傳的文件的後綴名改成一些不常見的,如
此操做也不能獲取服務器權限
圖片馬合併上傳:
在特殊的一些服務器環境裏或文件包含漏洞,可使用
如:IIS6.0的解析漏洞
1)當創建*.asa,*.asp格式的文件夾時,其目錄下的任意文件都會被IIS當作asp文件解析。
2)當上傳的文件爲*.asp;1.jpg時,IIS6.0一樣以ASP腳原本執行。
3)實例:http://blog.sina.com.cn/s/blog_7fe448c70101ab7u.html
在挖掘到一個文件包含漏洞的時候,上傳圖片馬。利用本地文件包含圖片馬
從而獲取服務器權限。
實例:https://www.jianshu.com/p/0cc01ee0d247
文件0x00截斷上傳:
有些文件系統讀到0x00的時候就不會在讀,致使了截斷。
例子:上傳 shell.jsp0x00jpg,會把jpg後綴給過濾掉
致使shell.jsp上傳(請求成功,但實際上無數據)
截斷文件將20改成00:
例子:將shell.php上傳用burosuite抓包,改成shell.php +空格+shell.jpg=shell.php shell.jpg
到Hex,找到文件名哪行的20改成00。
例子:https://blog.csdn.net/yiyefangzhou24/article/details/8986281
文件上傳漏洞測試手段:
一些常見的web配置環境所出現的漏洞:
IIs6.0:(這裏的IIS環境有不少相似的漏洞記得百度)
4)IIS6.0:當創建*.asa,*.asp格式的文件夾時,其目錄下的任意文件都會被IIS當作asp文件解析。
5)當上傳的文件爲*.asp;1.jpg時,IIS6.0一樣以ASP腳原本執行。
Apache 1x或2x:
當apache碰見不認識的後綴名會從後向前解析,例如:1.php.rar。他不認識rar就向前解析,直到他認識的後綴名。
PHPCGI(Nginx)(這個不是phpCGI獨有的漏洞有時候在IIS也會出現):
當上傳1.jpg以後。訪問1.jpg/1.php。此時的1.jpg會被當作php來解析。
文件上傳漏洞常見的防護手法:
1)前端JavaScript驗證 (發現有隻前端驗證的話,手動寫一個文件上傳的html將action設置爲判斷文件便可。)例如:
檢測上傳文件的是:upload.php 可是服務端沒作判斷,前端作了判斷。
<form action=’http://xx/upload.php’ method=’post’>
<input type=’file’ name=’file’ id=’file’><br>
<input type=’submit’ value=’提交’>
</form>
2)服務端檢測(黑白名單驗證,Content-Type判斷) 上面已經說過如何繞過服務端驗證。
黑名單檢測繞過方法:如上
白名單檢測方法:白名單並不能徹底防護住,上傳漏洞。能夠經過web環境配置的缺陷與
其餘漏洞一塊兒利用。
文件上傳防護方法:
服務端白名單防護。注意修復web環境帶來的漏洞與其餘漏洞。