XSS 繞過WAF和字符限制

  翻譯文章,原文: https://medium.com/bugbountywriteup/xss-waf-character-limitation-bypass-like-a-boss-2c788647c229


幾個月前,我在我的Twitter中分享了一個然後XSS WAF和字符限制的方法,這是一個私人的賞金項目。今天我將要分享更多的關於如何繞過的技術細節。希望對大家有所幫助。

回到2019年,我那時候正測試一個Web應用程序,這個應用程序允許用戶創建相冊,並可以上傳圖片,類似下圖:

XSS 繞過WAF和字符限制


當我單擊“編輯”時,可以重命名圖片,通常研究者通過改變圖片的名稱來測試是否存在XSS,我也是這麼做的,用瞭如下的payload:

<code>xsstest'">{{7*7}}/<code>

然而我注意到以下幾個問題

•輸入有15個字符限制,所以我的輸入變成xsstest'">{{7*7

•所有特殊字符均已正確轉義

•最後,在我嘗試重新加載這個相冊的時候,WAF把頁面重定向到了 /error.aspx?code=500,我只能重新把相冊命名為xsstest來重新加載相冊。

看起來此輸入已經受到XSS攻擊方面很好的保護了。然後,我開始使用其他可用選項並在瀏覽器中連接Burp Suit工具,並保持打開狀態以捕獲HTTP歷史記錄中的所有後臺請求。然後,當我瀏覽“ HTTP歷史記錄”選項卡時,一個後臺請求端點引起了我的注意,就像

https://subdomain.company.com/ajax/generateImageList.ashx?json={albums:[{"id":"“,” value“:” on“}]}。該請求是針對相冊“幻燈片放映”選項的,並且該頁面的來源為:

<code>

所以在這個新的generateImageList.ashx端點中

•用戶輸入未正確轉義

•沒有WAF檢測

但是我們仍然有15個字符的限制,這使該xss毫無用處。在這種情況下,我們可以想到的最小的xss有效負載是"oncut="alert(),當我們在Windows上按CTRL + X並在鍵盤上的OS X上按COMMAND + X時,這將導致空白彈出窗口:(注:oncut事件是當input內容被剪切的時候觸發)

<code>


XSS 繞過WAF和字符限制

我嘗試了所有可能的方法來繞過此字符限制,但無法做到。我在此處停止測試,並在“待辦事項”列表註釋中保存了有關此端點的信息,以便在再次測試此資產時在此處查看。大約七個月後,我再次開始測試該網站,並再次檢測在此端點。現在注意到,我可以上傳相冊中的多張照片,並通過選擇相冊中的所有照片,“幻燈片放映”選項請求端點更改為https://subdomain.company.com/ajax/generateAlbumImageList.ashx?json={albums:[{"id":"","value":"on"}]},該頁面來源為:

<code>

因此,現在我們在這裡進行多次注入點,那麼,為什麼不上傳5張圖片並使用Twitter提到的payload呢?

Payload:

•1st Injection: */


分享到:


相關文章: