檔案上傳 07 上傳攻擊框架
本文記錄檔案上傳學習過程,教程為 《Upload Attack Framework V1.0》
上傳攻擊框架
簡介
之前的都是從服務端的角度在給上傳情況分類
現在我們要從攻擊者的角度來給上傳情況分類
這是這套framework 的核心部分
知道了從攻擊者的角度如何分類
就等於知道如何來綜合分析一套原始碼
並從中知道是否有存在漏洞的可能性
繞過檢測/過濾
輕量級檢測繞過攻擊
[*] 繞過javascript 對副檔名的檢測
<用burp 之類的反向代理工具直接POST 資料包到服務端,繞過前端檢測>
[*] 繞過服務端對http request 包MIME 型別檢測
<用burp 之類的反向代理工具偽造POST 資料包到服務端,繞過MIME 檢測>
路徑/副檔名檢測繞過攻擊
[*] 黑名單繞過
檔名大小寫 名單列表繞過 特殊檔名繞過 0x00 截斷繞過 .htaccess 檔案攻擊 本地包含漏洞 Apache 解析漏洞 IIS 解析漏洞 Nginx 解析漏洞
[*] 白名單繞過
繞過0x00 截斷繞過 本地檔案包含漏洞 IIS 解析漏洞 Nginx 解析漏洞
檔案內容檢測繞過攻擊
[*] 檔案載入測試繞過
<對檔案進行程式碼注入再配合任意解析呼叫/漏洞>
上傳攻擊框架
輕量級檢測繞過攻擊
[*] 繞過javascript 對副檔名的檢測 (程式碼層漏洞) [*] 繞過服務端對http request 包MIME 型別檢測 (程式碼層漏洞)
路徑/副檔名檢測繞過攻擊
[*] 黑名單繞過 檔名大小寫繞過 (程式碼層漏洞) 名單列表繞過 (程式碼層漏洞) 特殊檔名繞過 (程式碼層漏洞) 0x00 截斷繞過 (程式碼層漏洞) .htaccess 檔案攻擊 (程式碼層漏洞) php 檔案包含漏洞 (程式碼層漏洞) Apache 解析漏洞 (應用層漏洞) IIS 解析漏洞 (應用層漏洞) Nginx 解析漏洞 (應用層漏洞) [*] 白名單繞過 0x00 截斷繞過 (程式碼層漏洞) php 檔案包含漏洞 (程式碼層漏洞) IIS 解析漏洞 (應用層漏洞) Nginx 解析漏洞 (應用層漏洞)
檔案內容檢測繞過攻擊
[*] 檔案載入繞過 (程式碼層漏洞)
上傳攻擊流程圖
程式碼層上傳漏洞如下圖(紅色字型標記部分)
攻擊要點:
要繞過輕量級檢測
要繞過檔案內容檢測
A. 要繞過程式碼層對路徑/副檔名檢測(直接解析)
B. 找到程式碼層的解析呼叫(間接解析)
應用層上傳漏洞如下圖(紅色字型標記部分)
攻擊要點:
要繞過輕量級檢測
要繞過檔案內容檢測
A. 找到應用層的解析漏洞(間接解析)
攻擊手法與環節的對應圖
上傳攻擊框架的核心之一
要注意下,在這裡如果在路徑/副檔名檢測處檢測未通過,流程到解析攻擊時
白名單檢測繞過技術裡並不完全能利用所有解析攻擊方式
在路徑/副檔名檢測繞過攻擊裡已經給出了具體細節
攻擊手法與環節圖
上傳攻擊分析框架
檢測框架圖
上傳攻擊框架的核心之二
大家可以像上面分析fckeditor 的方式,在分析一份原始碼或一個目標環境時
先把上面的上傳攻擊分析框架列表放好
然後去依次對比
哪些檢測環節存在/不存在
哪些環節是安全/還是有漏洞
哪些環節如果被利用是程式碼層漏洞/還是Web 應用程式解析漏洞
對應在該項後面進行填寫
最後把Vule 的部分選出來,再來分析如何進行組合,以及利用它們需要什麼樣的條件
通過這個分析框架進行白盒/黑盒分析並羅列出所有情況
攻擊者便能更系統地分析出原始碼/目標環境可能存在的漏洞
整個上傳攻擊的核心最後被分析和總結成了上面兩張重要的圖
攻擊手法與環節圖和檢測框架圖
這兩張圖就是這篇 paper 最有價值的總結了
上傳攻擊的防禦圖
上傳攻擊的防禦圖
圖中紅點便是防禦的重要環節
需要注意的:
- 輕量級檢測必然能繞過
- 檢測的重點放在檔案內容檢測 - 可以用檢測指令碼語言特徵碼的機制
- 路徑/副檔名檢測一定要用白名單 - 並且注意路徑的0x00 截斷攻擊(把php 更新至最新版本即可,已經修補了這個漏洞了)
- 不能有本地檔案包含漏洞
- 隨時注意更新web 應用軟體 - 避免被解析漏洞攻擊