使用Sboxr实现DOM XSS漏洞的自动挖掘与利用

2019 年 4 月 13 日 FreeBuf

这一系列文章将为大家展示如何在单页或JavaScript富应用上,使用Sboxr实现DOM XSS漏洞的自动挖掘与利用。我们将以https://domgo.at靶场中的10个DOM XSS的小练习为例,并为检测到的问题创建简单的PoC。

本文包含了前两个练习的设置说明和解决方案。其余的我们将在后续的文章中陆续为大家呈现。我们还将在Appsecco books发布一个gitbook,其中包含了所有练习的解决方案,网址为https://appsecco.com/books/。

什么是 DOM XSS/Client XSS?

纵观XSS的历史,DOM或客户端XSS在测试者和开发人员的心中都占有着特殊的地位。使用标准的XSS检测技术往往很难检测到它们,这种XSS漏洞大多发生在JS富应用上。

DOM型XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM型XSS漏洞。

Sboxr

Sboxr是一个用于测试和调试Web应用程序的工具,尤其是那些拥有大量JavaScript的应用程序。Sboxr处在浏览器和服务器之间运作,并注入它自己的JS代码(被称为DOM传感器),来监控JS使用,源,接收器,变量分配,函数调用等。然后,它会通过其Web控制台展示用户控制的数据的视图。

设置 Sboxr 和 Chrome

这里我使用的系统为Ubuntu 18.04,浏览器为Chrome 72。你可以遵循以下步骤进行设置:

获取Sboxr - https://sboxr.com/

Sboxr需要.NET Core SDK的支持,你可以按照https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-04/sdk-current上的说明,在Linux上进行安装。如果是Windows,请按照https://dotnet.microsoft.com/download上的说明进行操作

安装完成后,通过运行dotnet Sboxr.dll启动Sboxr

这将在3333端口上启动Sboxr Web界面(用于管理和分析发现的问题),端口3331为代理端口。

如果你希望使用Burp或其他代理,请浏览到http://localhost:3333/console,并单击HTTP Sensor设置上游代理(例如Burp或OWASP ZAP)的IP地址和端口。

设置完成后,我们还需要配置浏览器向Sboxr发送流量(然后可以转发到Burp或OWASP ZAP)。

Sboxr目前尚不支持SOCKS代理,因此你需要使用Burp或OWASP ZAP拦截流量。

如果是HTTPS站点Sboxr可能无法正常工作,因为没有要导入的证书。因此,我们使用带有--ignore-certificate-errors标记的Chrome忽略证书错误。

在Linux上,命令如下:

mkdir -p ~/.chrome;/opt/google/chrome/chrome -incognito --ignore-certificate-errors --proxy-server=http=http://localhost:3331\;https=http://localhost:3331 --user-data-dir=~/.chrome

在Windows上,操作如下(假设为默认安装路径):

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -incognito --ignore-certificate-errors --proxy-server=http=http://localhost:3331;https=http://localhost:3331 --user-data-dir="C:\Users\%Username%\AppData\Local\Temp\TestChromeProxy"

DOM XSS 的检测和利用

下面我将为大家展示前两个DOM型XSS的小练习。

Exercise 1

打开https://domgo.at/,然后单击左侧选项栏中的Exercise 1。

切换到Sboxr控制台,并单击Sboxr侧栏中的Code Execution

从HTML上下文中可以看出,数据源是location.hashproperty,执行的接收器是HTMLElement.innerHTML

单击“View Code Execution”图标,你将看到代码执行的详细流程。

通过单击View event location details图标,我们可以清楚地看到JS中我们的数据在哪里被接收器HTMLElement.innerHTML所使用

为了展示location.hash属性是可利用的,我们通过源传递JS并让它到达接收器以查看它是否被执行。

我插入了

Exercise 2

单击侧栏的Exercise 1以加载Exercise 1

单击侧栏上的Exercise 2以加载Exercise 2。记住,必须通过单击访问而不是直接打开URL,因为本练习中的源为document.referrer属性。

单击Sboxr侧栏中的“View Code Execution”图标

我们从易受攻击的代码中可以看到,如果URL中有一个名为payload的参数,则将其提取并传递给接收器。

我们可以使用以下简单的HTML页面构建我们的exploit。将其保存为exercise2.html并在本地托管(nginx/Apache/python/node/anything),并通过http://127.0.0.1/exercise2.html?payload=<svg%20onload=alert(document.domain)>链接进行利用:</svg%20onload=alert(document.domain)>

<html>
<body>
        <h2>PoC for Exercise 2 of https://domgo.at</h2>
<script>
            window.location="https://domgo.at/cxss/example/2"
</script>
</body>
</html>

该页面将加载并立即重定向到练习页面,因为referrer属性是用户可控的所以代码执行是可能的。

以上就是本文的全部内容,在接下来的几天内我们将陆续发布剩余的练习演示。感谢阅读!

参考文献

Sboxr — https://sboxr.com

DOM/Client XSS — https://www.owasp.org/index.php/TypesofCross-SiteScripting#DOMBasedXSS.28AKA_Type-0.29

Chrome 命令行 — https://dev.chromium.org/developers/how-tos/run-chromium-with-flags

*参考来源:appsecco,FB小编secist编译,转载请注明来自FreeBuf.COM

推荐阅读


登录查看更多
0

相关内容

Google Chrome,又称谷歌浏览器,是由谷歌(Google)公司开发的网页浏览器。基于开放源码的Chromium项目。 google.com/chrome/ chromium.org/...
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
190+阅读 · 2020年6月29日
Python导论,476页pdf,现代Python计算
专知会员服务
254+阅读 · 2020年5月17日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
CALDERA 一款对手自动模拟工具
黑白之道
20+阅读 · 2019年9月17日
msf实现linux shell反弹
黑白之道
49+阅读 · 2019年8月16日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
I2P - 适用于黑客的Android应用程序
黑白之道
28+阅读 · 2019年3月6日
Continual Unsupervised Representation Learning
Arxiv
7+阅读 · 2019年10月31日
Arxiv
5+阅读 · 2019年10月11日
Few-shot Adaptive Faster R-CNN
Arxiv
3+阅读 · 2019年3月22日
Arxiv
4+阅读 · 2018年4月17日
Arxiv
6+阅读 · 2018年3月19日
VIP会员
相关资讯
CALDERA 一款对手自动模拟工具
黑白之道
20+阅读 · 2019年9月17日
msf实现linux shell反弹
黑白之道
49+阅读 · 2019年8月16日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
I2P - 适用于黑客的Android应用程序
黑白之道
28+阅读 · 2019年3月6日
相关论文
Continual Unsupervised Representation Learning
Arxiv
7+阅读 · 2019年10月31日
Arxiv
5+阅读 · 2019年10月11日
Few-shot Adaptive Faster R-CNN
Arxiv
3+阅读 · 2019年3月22日
Arxiv
4+阅读 · 2018年4月17日
Arxiv
6+阅读 · 2018年3月19日
Top
微信扫码咨询专知VIP会员