當前位置:
首頁 > 最新 > Chrome XSS審計之SVG標籤繞過

Chrome XSS審計之SVG標籤繞過

在一年前,在我的私人Twitter賬戶 brutal secret ,我分享了一個有趣的方法來通過審計繞過chrome 的xss過濾器。我們將從黑盒測試的角度來觀察,一個邏輯假設和結論, 導致我們的 XSS 向量繞過了xss過濾器。

我們從已知的所有 XHTML 解析器 (瀏覽器) 的麻煩開始:

我們需要知道的是, SVG 標記比簡單的 XML/HTML 更複雜, 並且對攻擊者充滿了未知的資源。

開始一個簡單的svg標籤,我們再繼續使用a標籤製造一個空錨點.這個a標籤創造了一個超鏈接。嵌套a標籤我們製造一個矩形來創造一個可點擊區域,最後是像這樣的。

注意:由於是國外站。會導致js文件載入失敗。請使用合理方法獲取國外js文件

我們現在正在尋找一種與元素交互的方法, 但是由於xss過濾程序, 我們不能使用事件處理程序。所以我們將嘗試創造一個動畫,特別是這個標籤。

animate 標籤 採用父元素 (在我們的情況下為 rect 標籤) 的一個屬性並操作它的值, 例如 「寬度」。它在自己的屬性 「from」、」to」 和 「dur」 (持續時間) 的幫助下創建動畫效果。

有趣的結論是, 我們實際上是在按順序改變 「寬度」 屬性的原始值,

但如果我們針對不同的屬性呢?讓我們取錨點 (a) 的 href, 它我們沒有設置, 但是是隱式的.在屬性和中進行一些調整後, 我們就可以開始了。

通過點擊我們的現在, 我們被重定向到谷歌的網站。因此, 要彈出一個警告框,我們只需要嘗試將其更改為 「javascript: alert(1)」

沒那麼容易,即使試圖使用 HTML 編碼欺騙xss過濾器也會被阻止

我們回到 SVG 屬性參考, 找到一個有趣的替代屬性」from」 和 「to」: 動畫元素也可以使用 「value」 屬性, 為動畫提供相同的值.只需將 「值」 設置為 「javascript: alert(1)」, 我們就會再次受阻.但是, 令人驚訝的是, 這次我們使用 HTML 編碼的形式成功彈出一個警報,「javascript:alert(1)」。

奇怪的是, 任何其他任意屬性與我們的模糊測試使用的有效載荷將觸發一個攔截, 但是似乎是一個 「黑名單」!

我們更改 在他前面添加 標籤, 更適合於吸引受害者的單擊。少量添加文本標記..

boom,點擊後我們成功了

此繞過在版本51中找到, 儘管它可能在幾個以前的版本中使用,但是它目前仍然可以在本博客寫作的時候(2017年8月14日)谷歌 Chrome v60最新版本的時候使用。

註:現在我測試依然可用。

*本文作者:東林,轉載請註明來自 FreeBuf.COM

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

卡巴斯基2017第二季度APT趨勢分析報告
我是如何通過CSRF拿到Shell的
揭秘 | NSA內部文件背後的故事
還記得針對NPM的Typosquatting攻擊嗎?這次它又瞄準了PyPi
Optionsbleed 漏洞泄露 Apache Server 的內存信息

TAG:FreeBuf |