gpt4 book ai didi

html - 在这个 domxss.com 挑战中如何进行 HTML 注入(inject)

转载 作者:行者123 更新时间:2023-12-05 03:34:53 24 4
gpt4 key购买 nike

OWASP 对 HTML 注入(inject)页面 (link) 的测试显示了一个特定的代码,该代码应该容易受到 HTML 注入(inject)的攻击。<​​/p>

<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 注入(inject)攻击的资源都会很有用。

最佳答案

是的,非常旧的 jQuery 版本容易受到来自动态选择器字符串的 XSS 攻击。参见 Bug # 11290在 jQuery 的错误跟踪器上——如果表述得当,选择器字符串可能会被意外地解释为 HTML。如果用户可以提供选择器字符串,您可能会遇到麻烦。

举个最简单的例子:

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

原来如此

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

可以注入(inject)导致任意代码运行的 t

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

该错误已在 9 年前修复,因此除非您故意使用旧版本的 jQuery 并且从不更新您的依赖项,否则它可能不会影响您。

该错误最终由 an insufficiently strict regex. 引起.

关于html - 在这个 domxss.com 挑战中如何进行 HTML 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70048641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com