上傳漏洞

轉載自公衆號:newdooneSec

以下是鬥哥總結的一部分上傳漏洞的場景,如果你有積累別的上傳繞過姿勢也可以和鬥哥探討探討~

1

無任何過濾

現在大部分的研發人員只要有一點安全意識基本上都會對上傳功能進行一定的限制,但也不排除仍有網站的上傳功能沒有任何的防護。對於沒有任何防護措施的上傳功能,就可以任意上傳惡意文件啦。

舉個栗子:

a). 某站點對文件上傳無任何的防護。

b). 找到對應的文件上傳功能。

c). 直接上傳一個惡意文件,不用修改後綴名。

d). 文件上傳成功後會返回上傳的相對路徑。

e). 補全上傳路徑後訪問上傳的webshell,就可以對服務器進行控制。

2

客戶端校驗繞過

客戶端檢測最典型的方式就是JavaScript檢測,由於JavaScript在客戶端執行的特點,可以通過修改客戶端代碼或先上傳符合要求的文件再在上傳過程使用BURP等工具篡改文件等方式來繞過。

舉個栗子:

a). 某系統存在上傳漏洞。

b). 將shell文件後綴改爲允許上傳的文件進行上傳,再通過burp進行攔截改後綴,可順利上傳成功。

c). 訪問shell可以控制整個服務器,獲取服務器權限。

3

服務端校驗繞過

1.MIME繞過

MIME(Multipurpose Internet Mail Extensions)多用途互聯網郵件擴展類型。是設定某種擴展名的文件用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程序來打開。標準的文件上傳組件中會自動上傳文件的MIME類型,但是由於MIME類型是從客戶端傳遞的,修改也不影響文件正常運行,因此通過BURP攔截和修改MIME類型可以輕易繞過此類檢測。

舉個栗子:

a). 某系統使用abcedit編輯器存在mime繞過上傳漏洞。

b).上傳功能要求只能上傳圖片格式文件,我們上傳txt文件,使用抓包工具進行攔截。

c).將Content-Type改爲gif的mime格式。

d). 成功上傳txt繞過mime的限制。

2. 文件內容繞過

針對文件頭和文件內容檢測通常有兩種方式,白名單的方式是檢測上傳的文件中是否有白名單類型文件的文件頭等內容特徵信息,滿足要求方能上傳。黑名單是檢測一些WEBshell的特徵,如果包含相關特徵就不允許上傳。針對白名單檢測,可以在滿足要求的文件後插入木馬腳本語句來繞過。而黑名單則可以通過對關鍵函數的各類混淆變化來繞過。

舉個栗子:

a). 某系統存在上傳漏洞,找到相關上傳功能。

b) . 在正常的一張圖片中加入一句話木馬,製作成圖片馬,然後將圖片馬進行上傳。

c). 發現文件繞過內容檢測上傳成功,並且能連上shell,可控制整臺服務器。

d). 可以進一步控制內網。

3. 擴展名繞過

正常情況下如果用戶上傳的網頁木馬文件不是以響應的腳本文件擴展名上傳的,則無法正常運行,達不到控制網站服務器的目的。然而,如果對文件擴展名檢測的實現方式不當的話仍然存在風險。文件擴展名檢測通常分爲黑名單檢測和白名單檢測兩種,針對黑名單繞過方式有使用不常見的擴展名、大小寫繞過及特殊字符結尾等,針對白名單繞過方式可以使用截斷繞過、解析漏洞等進行繞過。

舉個栗子:

A. 特殊擴展名

a) .某個安全狗軟件存在上傳漏洞可進行繞過,正常上傳一個php的文件會被攔截。

b).在文件後綴名後加上一個空格和一個小數點,發現可以繞過上傳的限制。

c). 可以執行任意命令。

B. 截斷漏洞

a). 某系統存在上傳漏洞。

b). 登陸後找到上傳功能,上傳的時候進行抓包,修改後綴,加上url編碼後的%00,例如下面的修改爲jtbx1.jsp%00.dat。

c). 上傳文件後,可以訪問shell進行控制服務器。

4

修復建議

鬥哥這次的總結就到這啦,如果你也有上傳漏洞的繞過姿勢可以留言告訴鬥哥哦~

對於上傳漏洞的話,鬥哥還是要和程序猿小哥哥提點小建議:

1.對上傳的文件的擴展名和文件報頭信息在服務端與白名單對比,不符合白名單的不予保存。

2.上傳過程不應傳遞目錄或文件路徑,使用預先設置路徑列表中的匹配索引值,嚴禁泄露文件絕對路徑。

3.對文件進行重命名,使用隨機性好的文件目錄和文件名進行保存。

4.上傳文件的臨時目錄和保存目錄不允許執行權限。

  1. 有條件時可將保存在內容服務器或者數據庫中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章