24:WEB漏洞-文件上傳之WAF繞過及安全修復


本課重點

  • 案例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防護產品:寶塔、雲盾、安全公司產品等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM