利用ASP.NET中的x-up-devcap-post-charset請求頭繞過Web防火墻

22.png

以前我發(fā)表過幾篇利用編碼技術繞過WAF的文章。在文章中我不僅介紹了繞過WAF的方法,還明確指出WAF產品可以通過攔截特定的字符集或者只允許在Content-Type中使用白名單中的charset來使繞過方法無效。

而又經過一段時間的研究后,我又在ASP.NET中找到了一個用來繞WAF的請求頭x-up-devcap-post-charset,它可以用來代表charset,這樣就可以繞過WAF對Content-Type請求頭的檢測保護機制。

現在就讓我正式介紹x-up-devcap-post-charset,使用樣例如下:

POST /test/a.aspx?%C8%85%93%93%96%E6%96%99%93%84= HTTP/1.1
Host: target
User-Agent: UP foobar
Content-Type: application/x-www-form-urlencoded
x-up-devcap-post-charset: ibm500
Content-Length: 40

%89%95%97%A4%A3%F1=%A7%A7%A7%A7%A7%A7%A7

如上所示,Content-Type請求頭中沒有charset,x-up-devcap-post-charset表明了編碼使用的字符集。此外,為了告訴ASP.NET注意這個新的請求頭,User-Agent的值需要以UP作為開頭!

上述請求中的被編碼的參數我是通過Burp Suite HTTP Smuggler自動生成的,原始請求如下:

POST /testme87/a.aspx?HelloWorld= HTTP/1.1
Host: target
User-Agent: UP foobar
Content-Type: application/x-www-form-urlencoded
Content-Length: 14

input1=xxxxxxx

我之所以會發(fā)現這個特殊的請求頭,是我在ASP.NET的框架代碼中尋找其他東西時無意發(fā)現的。以下是ASP.NET中和這個請求頭有關的一段代碼,它展示了ASP.NET在查看Content-Type中的charset之前如何讀取內容編碼:

https://github.com/Microsoft/referencesource/blob/3b1eaf5203992df69de44c783a3eda37d3d4cd10/System/net/System/Net/HttpListenerRequest.cs#L362

33.png

以及

https://github.com/Microsoft/referencesource/blob/08b84d13e81cfdbd769a557b368539aac6a9cb30/System.Web/HttpRequest.cs#L905

44.png

我覺得我發(fā)現的這個編碼繞過技術應該適用于大多數WAF,因為我感覺它們沒有認真對待這個繞過技術。當然,OWASP ModSecurity核心規(guī)則集(CRS)很快就會為它創(chuàng)建一個專門的過濾規(guī)則。在我發(fā)布這篇文章之前,已經向CRS的Christian Folini(@ChrFolini)展示了技術細節(jié)。新規(guī)則將出現在[https://github.com/SpiderLabs/owasp-modsecurity-crs/pull/1392](https://github.com/SpiderLabs/owasp-modsecurity-crs/pull/1392)。

參考文獻:

https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2017/august/request-encoding-to-bypass-web-application-firewalls/

https://www.slideshare.net/SoroushDalili/waf-bypass-techniques-using-http-standard-and-web-servers-behaviour

https://soroush.secproject.com/blog/2018/08/waf-bypass-techniques-using-http-standard-and-web-servers-behaviour/

https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2017/september/rare-aspnet-request-validation-bypass-using-request-encoding/

https://github.com/nccgroup/BurpSuiteHTTPSmuggler/

感謝你的閱讀!

本文由白帽匯整理并翻譯,不代表白帽匯任何觀點和立場:https://nosec.org/home/detail/2556.html
來源:https://soroush.secproject.com/blog/2019/05/x-up-devcap-post-charset-header-in-aspnet-to-bypass-wafs-again/

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 前言 WAF(Web Application Firewall),網站應用級入侵防御系統(tǒng),通過執(zhí)行一系列針對 HT...
    泡面辦公室閱讀 2,575評論 0 7
  • web應用程序會對用戶的輸入進行驗證,過濾其中的一些關鍵字,這種過濾我們可以試著用下面的方法避開。 1、 不使用被...
    查無此人asdasd閱讀 7,654評論 0 5
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 當給sq...
    xuningbo閱讀 10,559評論 2 22
  • sqlmap用戶手冊 說明:本文為轉載,對原文中一些明顯的拼寫錯誤進行修正,并標注對自己有用的信息。 ======...
    wind_飄閱讀 2,205評論 0 5
  • 前言 我可以用 讀取你的passwd文件。享受Sucuri WAF,ModSecurity,Paranoia等等w...
    RedTeamWing閱讀 1,123評論 0 3

友情鏈接更多精彩內容