xss漏洞指攻击者通过注入恶意脚本(如javascript),在用户浏览器中执行以窃取cookie、劫持会话等;主要分反射型、存储型和dom型,其中dom型不经过服务端,依赖前端dom操作污染(如location.hash、postmessage误用)触发。

HTML跨域脚本执行漏洞不是标准漏洞类型名称,实际想挖的是 XSS(尤其是 DOM 型 XSS)或因 postMessage 使用不当导致的跨域脚本执行问题。直接搜“HTML跨域脚本执行漏洞”容易走偏——浏览器根本不会让不同源页面互相执行对方的 JS,真正能绕过同源策略触发脚本执行的,只有两类明确路径:DOM 操作污染 + postMessage 误用。
DOM 型 XSS 的核心触发点在 location.hash、location.search 和 document.referrer
这类 XSS 不经过服务端,所有逻辑都在前端 JS 中完成,所以 Burp 抓包看不到 payload,常规扫描器也大概率漏掉。关键看页面有没有把 URL 片段直接塞进 innerHTML、eval()、setTimeout() 或 document.write()。
- 先手动访问
http://target.com/page.html#<script>alert(1)</script>,观察是否弹窗;没反应?试试#%3Cimg%20src=x%20onerror=alert(1)%3E(URL 编码后绕过简单过滤) - 检查源码里是否有类似
document.getElementById('x').innerHTML = location.hash.slice(1)这种写法——slice(1)只去掉#,后面全照单接收 -
document.referrer也危险:如果页面用它来动态生成“来源跳转链接”,而没做 HTML 转义,攻击者诱导用户从恶意页面点击进来,就能注入
postMessage 接收端不校验 event.origin 就执行代码 = 开门放狗
很多开发者以为用了 postMessage 就安全了,结果在监听回调里写 if (event.data.action === 'load') { eval(event.data.code) },还忘了验证 event.origin。这时候只要控制任意子域名(比如 attacker.example.com)就能发消息过去执行任意 JS。
- 在目标页面打开控制台,执行
window.addEventListener('message', e => console.log(e), false),然后从另一个 tab 访问恶意页面,用parent.postMessage({action:'exec',code:'alert(1)'}, 'https://target.com')测试是否被接收 - 重点盯源码里
event.origin === 'https://trusted.com'这类判断——如果写成event.origin.indexOf('trusted.com') !== -1,就可能被https://evil-trusted.com绕过 - 更隐蔽的是只校验协议和主机名,却忽略端口:
https://target.com:8080和https://target.com:3000是不同源,但有人会漏判端口
别被 iframe 的 src 属性骗了,真正危险的是 contentWindow 操作
<iframe src="https://third-party.com"></iframe> 本身不构成漏洞,但一旦页面 JS 主动去读写它的 contentWindow(比如调用 iframe.contentWindow.eval()),且该 iframe 来源可控或可诱导,就可能触发跨域脚本执行。
- 搜索页面 JS 中是否出现
.contentWindow、.contentDocument、.getElementsByTag*等操作 iframe 内容的代码 - 特别注意那些“动态加载 iframe 并立即操作”的逻辑,比如
iframe.src = userControlledUrl; iframe.contentWindow.postMessage(...)—— 如果userControlledUrl指向攻击者控制的页面,后续 postMessage 就变成跨域命令通道 - Chrome 控制台里执行
document.querySelectorAll('iframe').forEach(i => console.log(i.src)),快速识别哪些 iframe 的 src 是拼接出来的
DOM 型 XSS 和 postMessage 误用的共同难点是:触发依赖前端运行时状态,没法靠静态扫描覆盖。你得亲手改 URL、开多个 tab 交互、翻一整页 JS 文件找那几行危险调用——自动化工具能帮你发现线索,但确认漏洞必须人工走一遍数据流。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











