# Cross-site scripting Lab16 本題是 Reflected XSS 利用 SVG 標籤繞過濾器觸發腳本。 > 常見 XSS 向量(如 `<script>`, `<img onerror=...>,` `<body onload=...>`)都被擋,但 SVG 標籤中的某些元素 & 事件沒被擋。 一樣先進入網站。 ![image](https://hackmd.io/_uploads/H1cqwgmrlx.png) 正常的會被擋下來,所以跟上次一樣丟到 Intruder 看哪些元素跟事件沒被擋。 ![image](https://hackmd.io/_uploads/SJG1_x7Hgx.png) ![image](https://hackmd.io/_uploads/Sk0M_l7Hxl.png) ![image](https://hackmd.io/_uploads/HJdTYgQBgl.png) ![image](https://hackmd.io/_uploads/Sk_Yce7rgl.png) 測出來:以下元素沒被擋: - `<svg>` - `<animatetransform>` 事件沒被擋的則是: - `onbegin` 所以我們將現有的資訊結合起來: ``` https://0aec00fd046e53768108f7ee00250041.h1-web-security-academy.net/?search="><svg><animatetransform onbegin=alert(1)> ``` - `<svg>` 是 HTML5 支援的圖形標籤,可以被瀏覽器解析。 - `<animatetransform>` 是 SVG 裡面用來做動畫的元素,但很多人沒想到它可以綁事件。 - `onbegin` 是 SVG 的動畫事件,動畫一開始就會觸發,等於不用滑鼠或鍵盤互動。 ![image](https://hackmd.io/_uploads/r1sVjxXBle.png) ![image](https://hackmd.io/_uploads/ryGBsemrxx.png) ---