如何尋找網站文件上傳漏洞?
- 2019 年 11 月 11 日
- 筆記
首先找到文件上傳的窗口,然後判斷是服務器端還是客戶端的驗證,客戶端較容易判斷出來,最後檢驗是哪種服務器端的過濾方式。判斷是客戶端和服務端檢驗,再檢驗是白名單還是黑名單,根據具體情況來決定採用什麼繞過方式。
文件上傳漏洞:服務器端和客戶端
服務器端:
.htaccess攻擊:
這個攻擊主要是上傳一個.htaccess文件,讓我們上傳到服務器端的文件能運行起來
看一段代碼來理解下:
<FilesMatch "Monster"> SetHandler application/x-httpd一php </FilesMatch>
這段代碼的意思就是,我上傳的文件,只要是Monster.xxx就以php格式運行,例如當我上傳一個Monster.txt,當我訪問這個文件的時候,這個文件就會以php形式運行起來。
這個漏洞主要應用在:上傳漏洞getshell,維持訪問後門。
%00截斷上傳
當服務器端過濾文件的時候,是通過判斷文件後綴來審查文件。
我們可以在傳輸這個文件改變文件的後綴名,例如:
www.xxx.com/qq.jpg(正常文件上傳)
www.xxx.com/qq.php%00.jpg(上傳一個php文件,但我們上傳到服務器端要以php運行呀,所以要截斷.jpg)
注意:%00這個在url上要編碼成url形式,否則url編碼之後上傳上去就不是%00了,所以會產生錯誤。
Mine修改上傳
當服務器端過濾文件的時候,是通過判斷文件類型來審查文件。
那我們就要改數據包中的Content-Type
jpg的類型是:image/jpeg


偽造路徑攻擊
結合解析漏洞利用
編輯器任意文件上傳
通常進到後台,大多數有個編輯器,這時候應該先確定是什麼編輯器,再去網上進行搜索該編輯器對應版本的漏洞。
客戶端:
JS繞過上傳
JS驗證時通過Java script來判斷文件,過濾,這個好解決,就是直接刪除過濾的代碼,因為這是客戶端代碼,這些代碼是直接顯示出來的,所以我可以知道他們的代碼。
或者通過捉包修改我們的數據包進行任意文件上傳,可以看反應速度來確定下是不是js本地驗證,客戶端反應快。
