天天看點

檔案上傳之WAF繞過及相安全防護

Content-Disposition:一般可更改

name:表單參數值,不能更改

filename:檔案名,可以更改

Content-Type:檔案 MIME,視情況更改

資料溢出-防止WAF比對(xxx...)'

符号變異-防止WAF比對(' " ;)

資料截斷-防止WAF比對(%00 ; 換行)

重複資料-防止WAF比對(參數多次)

我以靶場upload-labs第二關進行示範。

我們開啟安全狗的上傳防護:

檔案上傳之WAF繞過及相安全防護

第2關上傳一個php檔案,被安全狗檢測到且被攔截:

檔案上傳之WAF繞過及相安全防護

php加上空格"ph p",可上傳,但無法解析。

檔案上傳之WAF繞過及相安全防護

filename的内容進行溢出。

檔案上傳之WAF繞過及相安全防護

filename的内容進行溢出雖然可以繞過WAF但是我無法将php檔案上傳至伺服器。

檔案上傳之WAF繞過及相安全防護

name與filename之間進行溢出

也可繞過WAF但是無法上傳php檔案。

檔案上傳之WAF繞過及相安全防護
檔案上傳之WAF繞過及相安全防護

大量垃圾資料後加“;”

Content-Disposition與name之間的垃圾資料加上分号可繞過安全狗。

檔案上傳之WAF繞過及相安全防護

可成功上傳php檔案

檔案上傳之WAF繞過及相安全防護

經測試,name與filename之間的垃圾資料也可繞過。

檔案上傳之WAF繞過及相安全防護

可用payload:

filename的内容用單引号括起來(被攔截)

檔案上傳之WAF繞過及相安全防護

顯然被攔截

filename去掉最後一個雙引号(被攔截)

檔案上傳之WAF繞過及相安全防護

被攔截

filename去掉最後一個雙引号,再加上分号(字尾不能被解析)

檔案上傳之WAF繞過及相安全防護

可繞過,可上傳,但是無法被解析

filename去掉最後一個雙引号,在檔案名字尾前任意位置加空格(可行)

檔案上傳之WAF繞過及相安全防護

可繞過WAF,可上傳。

單引号與雙引号一緻。

隻在末尾加雙引号(被攔截)

檔案上傳之WAF繞過及相安全防護

檔案名前加雙引号或單引号(無法解析)

檔案名前加雙引号或單引号可繞過waf,也可上傳,但是無法解析。

檔案上傳之WAF繞過及相安全防護

檔案名中加入圖檔字尾提前用分号截斷

可用payload:

檔案名中加入圖檔字尾提前用分号截斷(可行)

原因是防護軟體隻檢測前面的部分,一旦正确就放行,不再檢測後面的

檔案上傳之WAF繞過及相安全防護

同理結合符号變形可有:

檔案名中用%00url編碼截斷(可行)

檔案上傳之WAF繞過及相安全防護

直接在資料包中進行換行操作(可行)

檔案上傳之WAF繞過及相安全防護
檔案上傳之WAF繞過及相安全防護
檔案上傳之WAF繞過及相安全防護

重複filename

前面的filename為可接受的檔案格式,最後一個為php檔案格式,前面的重複多次,可繞過。

檔案上傳之WAF繞過及相安全防護

filename中配合其他參數

配合Content-Type: image/jpeg:

payload:

檔案上傳之WAF繞過及相安全防護
檔案上傳之WAF繞過及相安全防護

字典位址:

手工測試的話有點麻煩,我們可以借助寫好的字典配合BP進行批量測試,先在本地測試好了,再在真實環境進行測試,以防會封IP。

我借助fuzzDicts的php字典進行測試。

首先将攔截的資料包發送至Intruder

檔案上傳之WAF繞過及相安全防護

清除所有變量

檔案上傳之WAF繞過及相安全防護

将filename的值設定為變量

檔案上傳之WAF繞過及相安全防護

payload加載字典:

檔案上傳之WAF繞過及相安全防護

開始攻擊:

檔案上傳之WAF繞過及相安全防護

能否成功取決于字典的好壞。

後端驗證:采用服務端驗證模式

字尾檢測:基于黑名單,白名單過濾

MIME 檢測:基于上傳自帶類型檢測

内容檢測:檔案頭,完整性檢測

自帶函數過濾:參考 uploadlabs關卡的函數

自定義函數過濾:function check_file(){}等

WAF 防護産品:寶塔,雲盾,安全公司産品等

上一篇: Presidential-01
下一篇: 磁盤分區