burpsuite靶场xss
常见函数
encodeURIComponent
转义除了如下所示外的所有字符:
1 |
|
学徒级别
1.将 XSS 反射到 HTML 上下文中
漏洞点:搜索栏
payload
1 |
|
2.将 XSS 反射到 HTML 上下文中
漏洞点:文章评论区
payload
1 |
|
3.使用源的接收器中的 DOM XSS
漏洞点:搜索栏
f12打开源代码
使用搜所功能之后发发现dom 接口
点击发现代码
1 |
|
构造payload
1 |
|
4.使用源在接收器中输入 DOM XSS
描述:搜索博客功能中包含一个基于 DOM 的跨站点脚本执行漏洞。它使用赋值,该赋值使用 来自 的数据更改元素的 HTML 内容。
dom使用了赋值形
查看源代码
思路:属性的值
无效并引发错误。这将触发事件处理程序,然后事件处理程序调用该函数。因此,每当用户的浏览器尝试加载包含恶意帖子的页面时,都会执行有效负载。
payload
1 |
|
src的值不正确触发事件 onerror
同理 事件型payload还有
1 |
|
5.使用源的 jQuery 锚点属性接收器中的 DOM XSS
描述:在提交反馈页中包含一个基于 DOM 的跨站点脚本漏洞。它使用 jQuery 库的选择器函数来查找锚点元素,并使用 来自 的数据更改其属性。$``href``location.search
要解决此练习,请发出“后退”链接警报。document.cookie
思路:
根据描述先找到相关代码
前端对应代码为
因此猜测为
输入的payload当做herf的值 尝试构造payload
1 |
|
发现无法闭合href属性
使用
1 |
|
输入之后进入href的值
1 |
|
单击即可触发
6.使用哈希更改事件在 jQuery 选择器接收器中 SINK 中的 DOM XSS
描述:此实验室主页上包含一个基于 DOM 的跨站点脚本漏洞。它使用jQuery的选择器函数自动滚动到给定的帖子,其标题通过属性传递。$()``location.hash
要解决实验室问题,请向受害者提供在其浏览器中调用该函数的攻击。print()
7.将 XSS 反射到带有尖括号 HTML 编码的属性中
描述:此实验室在搜索博客功能中包含一个反映的跨站点脚本漏洞,其中尖括号是 HTML 编码的。若要解决此实验室问题,请执行跨站点脚本攻击,该攻击会注入属性并调用函数。alert
漏洞点在搜索框中
输入xss进行搜索
发现输入的值作为了value属性的值,构造payload
1 |
|
发现
集合描述,是尖括号被转义,因此改用事件型触发
payload
1 |
|
8.将 XSS 存储到带有双引号 HTML 编码的锚点属性中href
描述:此实验室在注释功能中包含一个存储的跨站点脚本漏洞。若要解决此实验问题,请提交一个注释,该注释在单击注释作者姓名时调用该函数。alert
思路:根据描述,漏洞点在文章评论区,而且双引号会被过滤
解决:
一开始我以为是对Name的值进行xss,其实是对Website,Website设计的作用添加个人博客地址,游客可以点击评论者姓名即可跳转到评论者的博客地址
随即便发现了漏洞点
根据描述双引号会被转义 没有双引号闭合不了herf事件 尖括号无论是否被转义都无法使用
采用js伪协议
payload
1 |
|
9.将 XSS 反射到带有尖括号 HTML 编码的 JavaScript 字符串中
根据描述是在搜索框有xss,找到了对应代码
发现搜索框输入的东西会被encodeURIComponent函数编码
可以通过单引号闭合
payload
1 |
|
10.DOM XSS 在选择元素中使用源代码
随便访问一篇博客。url参数带有productId文章id
此时文章末尾的选择项目有三个选项
观察源代码
发现他是从url中获取storeId参数,前面在url中并没有
尝试在url里添加
此时下拉的选项里有我们刚刚添加的storeId参数
说明dom从url中提取参数
源代码
1 |
|
构造payload
1 |
|
实验完成
11.AngularJS表达式中的DOM XSS,带有尖括号和双引号HTML编码
在搜索框输入任意字符搜索
查看原代码
发现代码熟悉ng-app,名调用了AngularJS
AngularJS是一个流行的JavaScript库,它扫描包含属性的HTML节点的内容(也称为AngularJS指令)。将指令添加到 HTML 代码时,可以在双大括号内执行 JavaScript 表达式。在对尖括号进行编码时,此技术很有用。ng-app
AngularJS造成xss参考文章https://www.mianshigee.com/note/detail/76633iai/
使用payload
完成实验
当引用了第三方js库就可能引起xss
12.反射式 DOM XSS
进行进入博客搜索然后进行抓包
在返回包中观察到会对
search-results进行检索
构造payload闭合
1 |
|
但是观察到有一个反斜杠转义,因此多加一个反斜杠让他不转义
舍友payload改为
1 |
|
成功触发
13.存储的 DOM XSS
尝试插入
aa
在js中发现了过滤
为了防止XSS,该网站使用 JavaScriptreplace()函数对尖括号进行编码。但是,当第一个参数是字符串时,该函数仅替换第一次出现。我们通过在注释的开头简单地包含一组额外的尖括号来利用此漏洞。这些尖括号将被编码,但任何后续尖括号将不受影响,使我们能够有效地绕过过滤器并注入 HTML。
所以构造payload
1 |
|
完成实验
14.利用跨站点脚本窃取 cookie
插入简单payload就造成弹窗
1 |
|
那我们构造payload把cookie发送到Burp Collaborator Client
payload
1 |
|
Burp Collaborator Client使用
点击run测试是否正常
点击burp 选择Collaborator Client打开
然后点击复制
把复制的内容填入
payload fetch
最终payload样式为
1 |
|
然后到博客评论区提交payload 回到Collaborator Client点击poll now然后一会之后就可以看见交互
获取cookie之后替换即可,cookie为post里的传输值
15.利用跨站点脚本捕获密码
打开 burp collaborator client功能
点击复制返回替换payload里的值
1 |
|
然后payload放入评论区
提交评论之后点击 poll now等一会就可以看见有交互了
然后登录即可完成实验
16.利用XSS执行CSRF
这题需要使用xss执行csrf并且已经给出了payload
1 |
|
这个payload会发送一个请求 请求/my-account页面 然后使用正则把返回包中的token值过滤出来
修改邮件的请求包如下可以看见需要验证csrf token
但是当我们访问/my-account页面时
返回包会泄露用户token
那payload在获取token之后直接请求修改邮箱就可以造成csrf
17.将 XSS 反射到 HTML 上下文中,阻止大多数标记和属性
本关注入点在搜索框是个反射性xss
发现有标签被过滤了接下来用字典fuzz一下看看有什么没被过滤
字典地址https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
fuzz所有标签和事件
发现body标签没过滤 还有很多事件没过滤
现在使用body标签和onresize事件都是不经过过滤的
使用payload
1 |
|
填入靶场链接点击 store和deliver exploit to victim完成实验
18.将 XSS 反射到 HTML 上下文中,阻止除自定义标记之外的所有标记
题目有点哈人
阻止除自定义标记之外的所有 HTML 标记。
要解决实验室问题,请执行跨站点脚本攻击,注入自定义标记并自动发出警报document.cookie。
payload
1 |
|
在实验室使用即可
19.允许使用一些 SVG 标记的反射式 XSS
svg是一个HTML标签根据题目说明了没过滤可以直接用
漏洞点还是在搜索框 先fuzz一下什么事件没过滤
发现
这些标签都没被过滤
需要构造语句还需要fuzz一下看什么事件没过滤
发现onbegin事件还能用
构造payload
1 |
|
输入即可完成
20.规范链接标记中的反射 XSS
只能在谷歌浏览器使用
payload
1 |
|
21.将XSS反射到带有单引号和反斜杠转义的JavaScript字符串中
在搜索框输入111并且抓包
发现明显漏洞点
构造payload
1 |
|
成功
22.将XSS反射到带有尖括号和双引号的JavaScript字符串中,HTML编码和单引号转义
搜索框是和上一题一样的漏洞点
但是使用上一条的payload发现有过滤 尖括号被转义
payload
1 |
|
payload思路
因为可控内容在标签script标签里 因此直接不考虑尖括号过滤构造闭合即可
23.将 XSS 存储到带有尖括号和双引号的事件中 HTML 编码,单引号和反斜杠转义
在博客评论区进行评论
发现了漏洞点
payload
1 |
|
24.将 XSS 反射到带有尖括号、单引号、双引号、反斜杠和反引号的模板文本中 Unicode 转义
发现payload被转义
使用新payload
1 |
|
25.阻止事件处理程序和属性的反射式 XSS
payload
1 |
|
1 |
|
这里复制payload的后半部分进行搜索不会触发弹窗
直接访问带payload的url才能触发
26.在 JavaScript URL 中反射 XSS,但阻止了一些字符
发现漏洞点
payload
1 |
|
27.反射式XSS与AngularJS沙盒转义没有字符串
直接使用payload
payload
1 |
|