今天的主要內容是分享業務邏輯漏洞探索之上傳漏洞,本篇文章字數在2000字之內,閱讀用時大約7分鐘。php
注:本文中提供的例子均來自網絡已公開測試的例子,僅供參考。shell
許多網站都容許用戶自行上傳照片、電子檔材料,若是上傳功能沒有作好防禦措施,就會存在巨大的安全風險。若是Web應用在文件上傳過程當中沒有對文件的安全性進行有效的校驗,攻擊者能夠經過上傳Webshell等惡意文件對服務器進行攻擊,這種狀況下認爲系統存在文件上傳漏洞。數據庫
如下是部分上傳漏洞的場景,如圖所示:瀏覽器
1、無任何過濾安全
如今大部分的研發人員只要有一點安全意識基本上都會對上傳功能進行必定的限制,但也不排除仍有網站的上傳功能沒有任何的防禦。對於沒有任何防禦措施的上傳功能,就能夠任意上傳惡意文件。舉個例子:服務器
一、某站點對文件上傳無任何的防禦。網絡
二、找到對應的文件上傳功能。jsp
三、直接上傳一個惡意文件,不用修改後綴名。編輯器
四、文件上傳成功後會返回上傳的相對路徑。函數
五、全上傳路徑後訪問上傳的Webshell,就能夠對服務器進行控制。
2、客戶端校驗繞過
客戶端檢測最典型的方式就是JavaScript檢測,因爲JavaScript在客戶端執行的特色,能夠經過修改客戶端代碼或先上傳符合要求的文件再在上傳過程使用BURP等工具篡改文件等方式來繞過。舉個例子:
一、某系統存在上傳漏洞。
二、將shell文件後綴改成容許上傳的文件進行上傳,再經過burp進行攔截改後綴,可順利上傳成功。
三、訪問shell能夠控制整個服務器,獲取服務器權限。
3、服務端校驗繞過
no.1MIME繞過
MIME(Multipurpose Internet Mail Extensions)多用途互聯網郵件擴展類型。是設定某種擴展名的文件用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程序來打開。標準的文件上傳組件中會自動上傳文件的MIME類型,可是因爲MIME類型是從客戶端傳遞的,修改也不影響文件正常運行,所以經過BURP攔截和修改MIME類型能夠輕易繞過此類檢測。舉個例子:
一、某系統使用abcedit編輯器存在mime繞過上傳漏洞。
二、上傳功能要求只能上傳圖片格式文件,咱們上傳txt文件,使用抓包工具進行攔截。
no.2文件內容繞過
針對文件頭和文件內容檢測一般有兩種方式,白名單的方式是檢測上傳的文件中是否有白名單類型文件的文件頭等內容特徵信息,知足要求方能上傳。黑名單是檢測一些Webshell的特徵,若是包含相關特徵就不容許上傳。針對白名單檢測,能夠在知足要求的文件後插入木馬腳本語句來繞過。而黑名單則能夠經過對關鍵函數的各種混淆變化來繞過。舉個例子:
一、某系統存在上傳漏洞,找到相關上傳功能。
二、在正常的一張圖片中加入一句話木馬,製做成圖片馬,而後將圖片馬進行上傳。
三、發現文件繞過內容檢測上傳成功,而且能連上shell,可控制整臺服務器。
四、能夠進一步控制內網。
no.3擴展名繞過
正常狀況下若是用戶上傳的網頁木馬文件不是以響應的腳本文件擴展名上傳的,則沒法正常運行,達不到控制網站服務器的目的。然而,若是對文件擴展名檢測的實現方式不當的話仍然存在風險。文件擴展名檢測一般分爲黑名單檢測和白名單檢測兩種,針對黑名單繞過方式有使用不常見的擴展名、大小寫繞過及特殊字符結尾等,針對白名單繞過方式可使用截斷繞過、解析漏洞等進行繞過。舉個例子:
A. 特殊擴展名
此次的總結就到這啦,若是你也有上傳漏洞的繞過姿式能夠留言給咱們。對於上傳漏洞的話,仍是要和程序猿小哥哥提點小建議:
一、對上傳文件的擴展名和文件報頭信息在服務端與白名單對比,不符合白名單的不予保存。
二、上傳過程不該傳遞目錄或文件路徑,使用預先設置路徑列表中的匹配索引值,嚴禁泄露文件絕對路徑。
三、對文件進行重命名,使用隨機性好的文件目錄和文件名進行保存。
四、上傳文件的臨時目錄和保存目錄不容許執行權限。
五、有條件時可將保存在內容服務器或者數據庫中。