学徒-XSS上下文-HTML属性中-反射型XSS-尖括号HTML编码
# 实验室:XSS上下文-HTML属性中的反射型XSS-尖括号HTML编码
# 题目
此实验室在 博客搜索功能 中包含一个反射型的跨站脚本漏洞,其中尖括号被进行了 HTML 编码。若要解决实验室问题,请执行跨站脚本攻击,该攻击注入标签属性并调用alert
函数。
提示
仅你自己能够触发alert()
这并不意味着会对受害者起作用。在概念验证尝试中,你可能需要往有效负载中注入各种不同的属性,然后才能找到 在受害者浏览器中 能够成功执行的属性。
- name: 实验室-学徒
desc: XSS上下文-HTML属性中的反射型XSS-尖括号HTML编码 >>
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/contexts/lab-attribute-angle-brackets-html-encoded
bgColor: '#001350'
textColor: '#39d50c'
1
2
3
4
5
6
2
3
4
5
6
# 实操
点击 “ACCESS THE LAB” 进入实验室。
首页有一个老朋友 搜索功能。
尝试注入载荷,出口点位于某个 input 标签的 value 属性中,注入的内容被识别为普通字符串。
尝试使用引号和尖括号">
来闭合原有的属性和标签,成功脱离原有属性,但脱离原有标签时失败,因为尖括号<>
被过滤。
能否只脱离原有属性,在原有标签内执行 XSS 攻击?
在XSS备忘单 (opens new window)中寻找与 input 标签有关的载荷,发现input
标签 + autofocus
属性 + onfocus
事件的配套载荷。
autofocus
属性将会自动聚焦元素,当元素获得焦点时,将会触发onfocus
事件。
原有出口点已经存在 input 标签,所以我们只需要取部分载荷:
" autofocus onfocus=alert(1) x="
1
上述载荷通过双引号"
闭合原有属性,然后添加autofocus
属性以及onfocus
事件,最后通过x="
优雅地闭合原有的引号。
注入载荷:
成功调用 alert 函数。
实验完成。
编辑 (opens new window)