欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

使用Sboxr自动发现和利用DOM(客户端)XSS漏洞

来源:本站整理 作者:佚名 时间:2019-04-24 TAG: 我要投稿

这一系列的文章将向你展示如何在单页或富JavaScript的应用程序上识别DOM XSS的问题。作为示例,我们将在DOM XSS playground(https://domgo.at)上解决10个练习题目,并为检测到的问题创建了简单的概念证明漏洞。
这篇文章的内容涵盖了前两个练习的设置说明和解决方案。剩余的练习将在我们发布的其他文章中提到。我们还将发布一个gitbook,其中包含了Appsecco书籍门户网站上所有练习的解决方案。
更新:gitbook会挂在我们的图书门户网站上—— https://appsecco.com/books/automating-discovery-and-exploiting-dom-client-xss/
什么是DOM XSS / Client XSS
纵观Cross Site Scripting漏洞的历史,在测试人员和开发人员的心中都占有特殊的地位。使用标准检的测技术很难检测到这种XSS的变体,并且相对的来说,这种漏洞的变体很容易出现在大型的JS应用程序中。
OWASP将其定义为XSS的漏洞类型,其中的原因是由于这种漏洞是在受害者浏览器中通过原始客户端脚本修改DOM环境而执行攻击有效载荷,因此客户端代码以一种 “意外” 的方式运行。也就是说,页面本身(即HTTP响应)不会改变,但由于DOM环境中发生了恶意的修改,页面中包含的客户端代码执行方式发生了改变。
简而言之,当来自DOM源(如location.hash)的用户输入发现它赋值到了DOM接收器(如HTMLElement.innerHTML)时,就会发生客户端XSS漏洞。 DOM中有多个源,也可以有多个接收器,具体取决于JS的复杂程度和其所实现的功能。
通过手动的方式或代码审查来检测DOM XSS可能会花费大量的时间。一种可行的技术是通过一个工具从服务器发送流量,该工具可以注入自己的JS来监控DOM变化,只需浏览网站即可枚举所有源和接收器。
进入Sboxr
Sboxr是一个测试和调试Web应用程序的工具,尤其是大型的JavaScript应用程序。 Sboxr通过在浏览器和服务器之间的流量中注入它自己的JS代码(称为DOM传感器)来工作,该代码在使用站点时监视JS的使用情况,源,接收器,变量分配,函数调用等。然后,它通过其Web控制台显示用户控制的数据在数据最终出现在执行接收器中时所采用的各种流的视图。
设置Sboxr和Chrome
我们使用Ubuntu 18.04来设置我们的攻击工具链以及Chrome 72。以下步骤将帮助你进行设置:
1、从供应商网站获取Sboxr的许可副本 – https://sboxr.com/
2、运行Sboxr需要.NET 核心 SDK,可以按照这里的(https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-04/sdk-current)说明在Linux上进行安装。对于Windows系统,请按照这个(https://dotnet.microsoft.com/download)说明进行操作即可。
3、安装完成后,通过运行dotnet Sboxr.dll启动Sboxr
4、程序启动后会在端口3333 http://localhost:3333/console 上访问到Sboxr Web界面(用于管理和分析发现的问题),端口3331是一个代理端口。
5、如果你希望链接Burp或其他拦截代理,请浏览并单击HTTP Sensor以设置上游代理(例如Burp或OWASP ZAP)的IP地址和端口。

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

Sboxr目前还不支持SOCKS代理,因此你需要使用Burp或OWASP ZAP进行链接以阻止流量。
ED_:D_=>HTTPS站点可能无法与Sboxr一起正常工作,因为我们没有应该要导入的证书。因此,我们使用–ignore-certificate-errors参数启动Chrome(我们注意到Firefox的about:config中的禁用HSTS检查的network.stricttransportsecurity.preloadlist选项有一些问题,因此我们暂时会一直使用Chrome)。
在Linux上,使用以下命令启动Chrome:
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"
\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”

[1] [2] [3] [4] [5]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载