­

如何尋找網站文件上傳漏洞?

  • 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本地驗證,客戶端反應快。