1. 程式人生 > >實戰經驗丨業務邏輯漏洞探索之上傳漏洞

實戰經驗丨業務邏輯漏洞探索之上傳漏洞

相對路徑 如果 執行權 例如 adc 直接 命令 cap pst

今天的主要內容是分享業務邏輯漏洞探索之上傳漏洞,本篇文章字數在2000字以內,閱讀用時大約7分鐘。

註:本文中提供的例子均來自網絡已公開測試的例子,僅供參考。

許多網站都允許用戶自行上傳照片、電子檔材料,如果上傳功能沒有做好防護措施,就會存在巨大的安全風險。如果Web應用在文件上傳過程中沒有對文件的安全性進行有效的校驗,攻擊者可以通過上傳Webshell等惡意文件對服務器進行攻擊,這種情況下認為系統存在文件上傳漏洞。

以下是部分上傳漏洞的場景,如圖所示:

技術分享圖片

一、無任何過濾

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

1、某站點對文件上傳無任何的防護。

技術分享圖片

2、找到對應的文件上傳功能。

技術分享圖片

3、直接上傳一個惡意文件,不用修改後綴名。

技術分享圖片

4、文件上傳成功後會返回上傳的相對路徑。

技術分享圖片

5、全上傳路徑後訪問上傳的Webshell,就可以對服務器進行控制。

技術分享圖片

二、客戶端校驗繞過

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

1、某系統存在上傳漏洞。

技術分享圖片

2、將shell文件後綴改為允許上傳的文件進行上傳,再通過burp進行攔截改後綴,可順利上傳成功。

技術分享圖片

3、訪問shell可以控制整個服務器,獲取服務器權限。

技術分享圖片

技術分享圖片

三、服務端校驗繞過

no.1MIME繞過

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

1、某系統使用abcedit編輯器存在mime繞過上傳漏洞。

技術分享圖片

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

技術分享圖片

3、將Content-Type改為gif的mime格式。

技術分享圖片

4、成功上傳txt繞過mime的限制。

技術分享圖片

技術分享圖片

no.2文件內容繞過

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

1、某系統存在上傳漏洞,找到相關上傳功能。

技術分享圖片

2、在正常的一張圖片中加入一句話木馬,制作成圖片馬,然後將圖片馬進行上傳。

技術分享圖片

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

技術分享圖片

4、可以進一步控制內網。

技術分享圖片

no.3擴展名繞過

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

A. 特殊擴展名

  • 某個安全狗軟件存在上傳漏洞可進行繞過,正常上傳一個php的文件會被攔截。
技術分享圖片

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

技術分享圖片 技術分享圖片

可以執行任意命令。

技術分享圖片

B. 截斷漏洞

  • 某系統存在上傳漏洞。
技術分享圖片

  • 登陸後找到上傳功能,上傳的時候進行抓包,修改後綴,加上url編碼後的%00,例如下面的修改為jtbx1.jsp%00.dat。
技術分享圖片
  • 上傳文件後,可以訪問shell進行控制服務器。
技術分享圖片

四、修復建議

這次的總結就到這啦,如果你也有上傳漏洞的繞過姿勢可以留言給我們。對於上傳漏洞的話,還是要和程序猿小哥哥提點小建議:

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

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

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

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

5、有條件時可將保存在內容服務器或者數據庫中。

實戰經驗丨業務邏輯漏洞探索之上傳漏洞