学徒-DOM型XSS-innerHTML接收器-location.search源
# 实验室:DOM型XSS-innerHTML接收器-location.search源
# 题目
此实验室在 博客搜索功能 中包含一个基于 DOM 的跨站脚本漏洞。它通过innerHTML
处理任务,该任务使用location.search
中的数据来更改div
元素的 HTML 内容。
若要解决实验室问题,请通过调用alert
函数来执行跨站脚本攻击。
- name: 实验室-学徒
desc: DOM型XSS-innerHTML接收器-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-innerhtml-sink
bgColor: '#001350'
textColor: '#39d50c'
1
2
3
4
5
6
2
3
4
5
6
# 实操
点击 “ACCESS THE LAB” 进入实验室。
在首页中可以看到一个搜索功能,尝试输入任意字符并点击 “Search”。
网页以 GET 方式提交了这些字符,参数名为search
,这些字符被包含在了即时响应中。
在网页源代码中可以看到一段 JavaScript:
function doSearchQuery(query) {
document.getElementById('searchMessage').innerHTML = query;
}
var query = (new URLSearchParams(window.location.search)).get('search');
if(query) {
doSearchQuery(query);
}
1
2
3
4
5
6
7
2
3
4
5
6
7
上述代码会获取 GET 中的search
参数,并将其参数值放入 searchMessage 元素的 HTML 中。
通过前面的理论知识学习,得知innerHTML
不会解析script
标签。
尝试注入带有script
标签的攻击载荷,虽然载荷被包含在即时响应中,也没有被编码,但其不会被正常解析和执行。
注入带有img
标签和onerror
事件的攻击载荷,成功调用 alert 函数。
carsaid<img src=1 onerror=alert(1)>
1
实验完成。
编辑 (opens new window)