Part 1 —— https://nosec.org/home/detail/2421.html

大家好,這是我關於利用Sboxr自動挖掘DOM型XSS的第二部分。在這篇文章中我將繼續講述我所搭建的XSS演示網站https://domgo.at中的4個演示(演示3到演示6)。通過利用Sboxr,我可以自動化挖掘出這四個演示中的隱藏的DOM型XSS漏洞。

當然,我將詳細講述Sboxr的利用方法和漏洞發現流程,並為所挖掘出的XSS創建一個簡單的PoC。如果你想了解更多關於安全方面的信息,歡迎光臨我的gitbook,appsecco.com/books/

演示 3

在許多Web應用中,來自第三方應用的數據會通過接收器成為自身應用的一部分。在這種情況下,第三方應用的XHR端點就可以將惡意代碼注入目標應用中。

即使XHR只限於同一站點,也需要驗證數據的安全性。在現代應用中,有很多會直接接收未經檢查的外部數據,並存儲到資料庫中,最終導致持久的DOM型XSS。

此練習涉及JSON端點的XHR請求,最終所請求的數據將回應到客戶端,然後由HTMLElement.innerHTML接受,形成DOM型XSS。

1.在演示網站左側點擊「Exercise - 3」頁面,然後往文本框中輸入隨機字元串,最後單擊Execute Payload按鈕。

2.其中涉及的JSON端點如下 domgo.at/data.json?

3.使用Sboxr你可以看到如下數據流

4.同時我們也可以準確的看到接收器中使用的JSON響應數據,方便創建exploit

5.最後,payload為<img src=1 onerror=alert(document.domain)>,直接輸入到文本框中

演示 4

與XHR類似,websocket所傳遞的數據也並不是全可信,在缺乏安全過濾的情況下,很有可能導致DOM型XSS漏洞。

此演示涉及websocket請求所引發的漏洞,其請求的數據將直接返回到客戶端,然後被接收器HTMLElement.innerHTML讀取,形成XSS。

1.在「Exercise - 4」頁面的文本框中輸入隨機字元串,然後單擊Execute Payload按鈕。

2.注意,此時的數據是由Websocketwss://domgo.at/ws提供的

3.使用Sboxr查看數據流

4.我們可以清楚看到接收器所接受的數據,藉此創建exploit

5.最後,我們在文本框中輸入<img src=1 onerror=alert(document.domain)>就可以看到彈框

演示 5

XHR,fetch API,websockets或postMessage等外部信道經常會被忽視,但都有可能成為DOM型XSS的源頭。特別是當數據來自很多不同的來源時,就容易隱藏漏洞。作為安全人員,你必須留時刻意這些數據源。

本演示涉及一個postMessage,它將用戶輸入的數據發送到window.onmessage,然後再將數據發送到接收器HTMLElement.innerHTML,導致XSS漏洞。

1.在「Exercise - 5」頁面的文本框中輸入隨機字元串,然後單擊Execute Payload按鈕

2.在這種情況下,數據源頭是來自https://domgo.at(同源)的窗口消息。

3.在Sboxr中查看整條數據流

4.我們可以直接看到接收器所接受的數據,快速創建exploit

5.最後,我們在文本框中輸入<img src=1 onerror=alert(document.domain)>,就可以看到彈框

演示 6

另一個不可信的數據源是瀏覽器的本地存儲,例如localStoragesessionStorageIndexedDB。雖然攻擊者無法直接控制DOM Storage,但可能能夠通過其他HTML元素或JS將惡意數據導入存儲中。而這些數據最終可能會被提取出來並渲染,形成DOM型XSS。

一個很好的例子就是Twitter子域上的DOM型XSS——hackerone.com/reports/2

在此演示中,利用的數據源是HTML LocalStorage。頁面的JS會從localStorage讀取數據,並將其發送到HTMLElement.innerHTML,最終形成XSS。

1.在「Exercise - 6」頁面的文本框中輸入隨機字元串,然後單擊Execute Payload按鈕。

2.此時,渲染到頁面的數據來自HTML localStorage

3.我們可以在Sboxr查看從源到接收器的數據流

4.查看漏洞附近的代碼,並創建exploit

5.最後,在文本框中輸入<img src=1 onerror=alert(document.domain)>,就可以看到彈框

這就是這篇文章的全部內容。我將在接下來的幾天放出第3部分的文章,再見!

參考

  1. Sboxr-https://sboxr.com
  2. DOM/Client XSS-https://www.owasp.org/index.php/Types_of_Cross-Site_sc ripting#DOM_ba sed_XSS_.28AKA_Type-0.29
  3. xm lHttpRequest(XHR)MDN-https://developer.mozilla.org/en-US/docs/Web/API/xm lHttpRequest
  4. window.postMessage()MDN-developer.mozilla.org/e
  5. WebSocket API MDN-developer.mozilla.org/e
  6. Fetch API MDN-developer.mozilla.org/e
  7. Web Storage API MDN-developer.mozilla.org/e

感謝你的閱讀!

本文由白帽彙整理並翻譯,不代表白帽匯任何觀點和立場

來源:利用Sboxr自動發現和利用DOM型XSS-Part 2

原文:blog.appsecco.com/autom

白帽匯從事信息安全,專註於安全大數據、企業威脅情報。

公司產品:FOFA-網路空間安全搜索引擎、FOEYE-網路空間檢索系統、NOSEC-安全訊息平台。

為您提供:網路空間測繪、企業資產收集、企業威脅情報、應急響應服務。


推薦閱讀:
相关文章