首页
社区
课程
招聘
[翻译]使用Sboxr自动发现和利用DOM型XSS攻击漏洞(第一部分)
发表于: 2019-4-30 16:10 14500

[翻译]使用Sboxr自动发现和利用DOM型XSS攻击漏洞(第一部分)

2019-4-30 16:10
14500

本系列文章将会向你展示:怎样利用Sboxr自动识别单页面应用或JavaScript富应用上的DOM型XSS漏洞。为了更好的介绍,我搭建了一套DOM型XSS漏洞演练平台——https://domgo.at,上面有10个练习题和对应的POC。

本篇是第一部分,主要包含前两个练习题的介绍和解题方法。其他题会在之后的文章中介绍。

此外,所有练习题的解题方法会整合在一个gitbook中——https://appsecco.com/books/automating-discovery-and-exploiting-dom-client-xss/


纵观跨站脚本攻击的历史,DOM/Client型XSS漏洞在安全人员的心中一直都有特殊的地位。一般的检测技术很容易忽略这种类型的XSS漏洞,而这种漏洞又很容易发生在使用了大量JS的应用中。

OWASP中定义DOM型XSS漏洞为:通过改变受害者浏览器中用于原始客户端脚本的DOM环境,使客户端代码以“意外”的方式执行。这意味着,不是因为页面本身(即HTTP响应)改变,而是因为DOM环境被恶意修改,导致客户端代码以不同的方式执行。

简而言之,当来自DOM源(比如location.hash)的用户输入,找到了通往DOM接收器(比如HTMLElement.innerHTML)的方法时,DOM型XSS漏洞就会出现。DOM型XSS攻击千变万化,因为DOM源和接收器的类型多种多样,取决于JS的复杂程度和实现的功能。

我们使用Ubuntu 18.04和Chrome 72安装工具。设置的步骤如下:

1.下载Sboxr——https://sboxr.com/download(Sboxr是收费的,可以用企业邮箱注册试用账号)

2.安装.NET Core SDK(需安装与Sboxr相匹配的SDK版本,译者安装v2.1.302)

Linux系统可参考:https://dotnet.microsoft.com/download/linux-package-manager/ubuntu18-04/sdk-current

Windwos系统可参考:https://dotnet.microsoft.com/download

3.安装完成后,运行 dotnet Sboxr.dll 启动Sboxr;

4.然后会在3333端口开启Sboxr的web页面(用于管理和分析),3331端口是代理端口;

Sboxr目前不支持SOCKS代理,所以要用Burp或OWASP ZAP拦截流量。

因为缺少可导入的证书,Https站点可能不支持Sboxr,所以在命令行端口启动chrome时要带上--ignore-certificate-errors 标签来忽略证书错误(Firefox浏览器不支持通过about:config中的network.stricttransportsecurity.preloadlist选项来禁用证书校验,所以我们选择Chrome浏览器)。

这部分内容中,我们会在XSS漏洞演练平台上检测和利用DOM型XSS漏洞。打开https://domgo.at漏洞演练平台。

以下是每个练习题使用Sboxr的解题方法,以及基于源和接收器的POC。由于这些漏洞可以让读者看到正在执行的用户控制数据,所以在提交bug报告时,可以利用这些漏洞创建你自己的POC。


1.打开https://domgo.at/,左侧菜单中选择练习题1,就可以用命令行启动Chrome中的第一个练习了;

2.切换到Sboxr控制台,点击导航栏中的“代码执行”;

 

3.在HTML内容中明显可以看到,数据源是Location.hash.property,导致漏洞的接收器是HTMLElement.innerHTML ;


4.点击“代码执行”图标打开“代码执行详细信息”窗口;

 

5.点击“查看事件位置详细信息“图标,可以看到在JS中的数据被接收器HTMLElement.innerHTML使用;

6.为了确保Location.hash.property是可利用的,让JS代码从源到接收器并查看执行情况;

7.该练习题的解题方法是,通过location.hash属性传送<svg onload=alert(document.domain)>。最终的漏洞利用POC是——https://domgo.at/cxss/example/1?payload=abcd&sp=x#<svg%20onload=alert(document.domain)>



1. 左侧菜单中点击练习题1,加载第一个练习题;

2. 左侧菜单中选择练习题2,加载第二个练习题。必须通过点击操作进入题目,不能直接通过浏览器打开题目URL,因为本练习中的源是document.referrer属性;

3.像上一个练习题一样,点击Sboxr导航栏中的“代码执行”;

4.从漏洞代码中可以看出,如果referrer的URL中有一个名为 payload 的参数,则将其提取并传递给接收器;

5.可以通过以下简单的HTML页面实现漏洞利用。将该文件另存为 exercise2.html 并在本地托管(nginx/Apache/python/node/anything),通过http://127.0.0.1/exercise2.html?payload=<svg%20onload=alert(document.domain)>访问;

6.HTML页面会加载并立即重定向到练习题页面。这就表明Referrer属性是用户可控的,可以利用这个属性实现代码执行。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-1-22 09:31 被Green奇编辑 ,原因: 图片过期,更新图片
收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 50161
活跃值: (20660)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
图片失效了
2019-5-2 09:28
0
雪    币: 1475
活跃值: (522)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
3
谢谢大大~图片已正常
2019-5-5 09:09
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
您好,可以更新下图片吗( •̥́ ˍ •̀ू )
2020-1-3 09:07
0
雪    币: 1475
活跃值: (522)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
5
freekey000 您好,可以更新下图片吗( •̥́ ˍ •̀ू )
抱歉哈,图片已更新
2020-1-22 09:33
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
是需要翻墙吗,网站打不开呢!
2020-1-26 19:08
3
雪    币: 1475
活跃值: (522)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
7
部分链接需要翻墙
2020-4-16 16:25
0
游客
登录 | 注册 方可回帖
返回
//