You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Burp扫描提示疑似DOM型XSS,求验证及利用Payload

分析DOM型XSS疑似告警:基于window.location.hash与jQuery $()的场景

嘿,咱们来拆解下你遇到的这个Burp告警问题。首先先理清楚工具提示的代码逻辑:

应用从window.location.hash读取URL哈希值,直接传入jQuery的$()函数,接着调用offset().top获取元素位置,最终用来做页面滚动动画。

一、先判断:这大概率是误报吗?

核心得看jQuery的$()函数怎么处理输入:

  • 如果哈希值是HTML标签字符串(比如<img src=x>),jQuery会创建对应的DOM元素,但这些元素默认不会被插入到页面里。调用offset()时,没插入DOM的元素会返回null,再访问.top就会抛出JS错误,直接中断后续代码,恶意脚本根本跑不起来。
  • 如果哈希值是CSS选择器字符串(比如#header、.content),jQuery只会在页面里找匹配的元素,完全不会执行任何脚本逻辑。

只有碰到以下两种特殊情况,才可能真的有风险:

  • 网站用的是超老版本的jQuery(比如1.6及更早),这类版本存在已知的选择器解析漏洞,特殊构造的选择器可能触发代码执行;
  • 页面还有其他隐藏逻辑,比如会把$(window.location.hash)返回的元素插入到DOM里,那风险就上来了。

二、可以试试这些Payload来验证

虽然常规场景下很难触发XSS,但你可以用下面的Payload测一测:

  • HTML元素测试Payload:#<img src=x onerror=alert(document.domain)>
    原理是强制jQuery创建带onerror事件的img元素,但因为元素没被插入页面,多数浏览器不会执行这个事件;不过旧浏览器或者特殊环境下可能有例外。
  • 老旧jQuery版本专属Payload:#[(alert(1))]
    这个只对jQuery 1.2到1.5版本有效,旧版本的选择器解析器有缺陷,会把这种特殊语法当成代码执行,但现在几乎没人用这么老的版本了。
  • DOM事件触发测试:#<div onclick=alert(1)>
    同样是创建带事件的元素,但没插入DOM的话点击事件根本触发不了;除非页面后续有逻辑把这个元素加到页面里。

三、自己动手验证的步骤

  1. 打开浏览器F12开发者工具,切到Console标签;
  2. 手动模拟代码执行:把window.location.hash换成你构造的Payload,执行$("你的Payload").offset().top,看看会不会弹出alert,或者有没有报错;
  3. 查一下jQuery版本:在Console里输jQuery.fn.jquery就能看到,如果版本≥3.0,基本可以确定是误报;
  4. 仔细看看页面逻辑:有没有代码会把$(window.location.hash)返回的元素插入到DOM中,如果有,就得再深入排查。

总的来说,这个告警绝大多数情况是误报,当前代码逻辑下,哈希值要么用来查元素,要么创建个没人管的DOM元素,根本触发不了脚本执行。不过还是建议你结合jQuery版本和页面实际逻辑再确认下~

内容的提问来源于stack exchange,提问作者AW Wasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:44:08