学徒-DOM型XSS-jQuery锚点href属性接收器-location.search源
# 实验室:DOM型XSS-jQuery锚点href属性接收器-location.search源
# 题目
此实验室在 提交反馈页面 中包含一个基于 DOM 的跨站脚本漏洞。它使用 jQuery 库的$
选择器函数来查找锚点元素,并使用源自location.search
的数据更改其href
属性。
若要解决实验室问题,请将 “back” 链接设置为alert(document.cookie)
。
- name: 实验室-学徒
desc: DOM型XSS-jQuery锚点href属性接收器-location.search源 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-jquery-href-attribute-sink
bgColor: '#001350'
textColor: '#39d50c'
1
2
3
4
5
6
2
3
4
5
6
# 实操
点击 “ACCESS THE LAB” 进入实验室。
进入实验室首页,点击右上角的 “Submit feedback” 进入反馈页面。
在反馈页面中,可以看到一个表单,其中含有 4 个表单项。尝试填写并提交表单,未发现可疑点。
注意,刚刚进入反馈页面时,URL 中多出了一个 GET 参数returnPath
,非常可疑。
启用浏览器的开发者工具,发现右下角 “Back” 按钮的href
属性值就是 GET 参数returnPath
的值。
同时发现一段 JavaScript:
$(function() {
$('#backLink').attr("href", (new URLSearchParams(window.location.search)).get('returnPath'));
});
1
2
3
2
3
以上代码会获取 GET 中的returnPath
参数值,并将其设置为 “Back” 按钮的href
属性值。
尝试在returnPath
参数中注入攻击载荷,但双引号被编码,无法脱离原来的属性和标签。
但我们可以注入另一种载荷,使用伪协议来触发 JavaScript:
?returnPath=javascript:alert(1)
1
注入载荷之后,点击 “Back” 按钮。
点击之后,成功调用 alert 函数。
实验完成。
编辑 (opens new window)