Atlassian Confluence 远程代码执行漏洞分析(CVE-2023-22518)
字数 1427 2025-08-20 18:17:48

Atlassian Confluence 远程代码执行漏洞分析(CVE-2023-22518) 教学文档

1. 漏洞概述

CVE-2023-22518是Atlassian Confluence中的一个严重漏洞,属于权限分配不当导致的远程代码执行漏洞。该漏洞允许攻击者通过未授权访问特定接口,最终可能导致完全控制Confluence服务器。

2. 环境搭建

2.1 所需环境

  • Docker环境
  • Confluence 8.6.0版本
  • MySQL数据库

2.2 搭建步骤

2.2.1 创建目录和准备文件

  1. 创建目录myconfluence
  2. 将环境配置压缩包解压至该目录
  3. 在目录下创建data文件夹

2.2.2 启动容器

docker-compose -f docker-compose-confluence.yml up -d

2.2.3 容器内初始化

进入容器后执行:

apt-get update; apt-get install -y net-tools vim mysql-server netcat tcpdump

2.3 Confluence激活

方法1:官方免费获取

方法2:手动激活

  1. 访问8090端口获取ServerID
  2. 在容器中执行:
cd /var/atlassian/
java -jar atlassian-agent.jar -d -m test@test.com -n BAT -p 'conf' -o http://localhost:8090 -s <ServerID>
  1. 将生成的License code复制到Confluence中

2.4 数据库配置

2.4.1 MySQL配置

  1. 复制配置文件:
docker cp ./my.cnf confluence:/etc/mysql/my.cnf
  1. 执行SQL语句:
CREATE DATABASE confdb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'testuser'@'%' IDENTIFIED BY 'test123';
GRANT ALL PRIVILEGES ON confluence.* TO 'testuser'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'%';
FLUSH PRIVILEGES;
  1. 重启MySQL服务:
service mysql restart
  1. 设置MySQL自启动:
    修改/entrypoint.py文件,添加:
import os;os.system("service mysql start")

2.4.2 界面配置

在Confluence安装界面输入数据库连接信息:

  • 数据库类型:MySQL
  • 主机名:localhost
  • 端口:3306
  • 数据库名:confdb
  • 用户名:testuser
  • 密码:test123

2.5 创建管理员账号

在安装过程中创建一个示例站点和管理员账号。

3. 漏洞分析

3.1 漏洞根源

通过比较8.6.1(修复版本)的jar文件,发现大部分action都加入了AdminOnly注解,表明这是一个权限分配不当的问题。

3.2 Struct2框架特性

Confluence基于Struct2框架开发,使用二级哈希表进行路由查找。关键问题在于:

  • 哈希表存储不同namespace及其关联的action
  • 当前package的action会继承父级包的action
  • 某些情况下,请求/json/xxxaction会路由到/admin/xxxaction/setup/xxxaction

3.3 漏洞接口

通过分析发现/json/setup-restore.action接口可以未授权访问,而正常情况下应该只能通过/setup/setup-restore.action访问。

4. 漏洞利用

4.1 未授权恢复备份

  1. 准备一个修改过密码的站点备份文件
  2. 访问/json/setup-restore.action接口
  3. 上传备份文件进行恢复
  4. 使用备份中的管理员凭证登录

注意:空备份会导致数据清空,必须使用有效的站点备份文件。

4.2 远程代码执行

  1. 登录后台后,进入"管理应用"
  2. 使用"上传应用"功能上传恶意插件
  3. 通过插件实现任意命令执行

5. 防护措施

  1. 及时升级到最新版本
  2. 限制对Confluence管理接口的访问
  3. 实施网络隔离,限制外部访问Confluence管理端口
  4. 定期备份数据

6. 参考资源

  1. 环境搭建资源:百度网盘链接 提取码: asbw
  2. 官方安全公告:Atlassian安全公告
  3. GitHub PoC参考:CVE-2023-22515_RCE

7. 免责声明

本文仅供学习研究使用,任何利用此漏洞进行的非法行为都与作者无关。请在法律允许范围内使用这些信息。

Atlassian Confluence 远程代码执行漏洞分析(CVE-2023-22518) 教学文档 1. 漏洞概述 CVE-2023-22518是Atlassian Confluence中的一个严重漏洞,属于权限分配不当导致的远程代码执行漏洞。该漏洞允许攻击者通过未授权访问特定接口,最终可能导致完全控制Confluence服务器。 2. 环境搭建 2.1 所需环境 Docker环境 Confluence 8.6.0版本 MySQL数据库 2.2 搭建步骤 2.2.1 创建目录和准备文件 创建目录 myconfluence 将环境配置压缩包解压至该目录 在目录下创建 data 文件夹 2.2.2 启动容器 2.2.3 容器内初始化 进入容器后执行: 2.3 Confluence激活 方法1:官方免费获取 方法2:手动激活 访问8090端口获取ServerID 在容器中执行: 将生成的License code复制到Confluence中 2.4 数据库配置 2.4.1 MySQL配置 复制配置文件: 执行SQL语句: 重启MySQL服务: 设置MySQL自启动: 修改 /entrypoint.py 文件,添加: 2.4.2 界面配置 在Confluence安装界面输入数据库连接信息: 数据库类型:MySQL 主机名:localhost 端口:3306 数据库名:confdb 用户名:testuser 密码:test123 2.5 创建管理员账号 在安装过程中创建一个示例站点和管理员账号。 3. 漏洞分析 3.1 漏洞根源 通过比较8.6.1(修复版本)的jar文件,发现大部分action都加入了 AdminOnly 注解,表明这是一个权限分配不当的问题。 3.2 Struct2框架特性 Confluence基于Struct2框架开发,使用二级哈希表进行路由查找。关键问题在于: 哈希表存储不同namespace及其关联的action 当前package的action会继承父级包的action 某些情况下,请求 /json/xxxaction 会路由到 /admin/xxxaction 或 /setup/xxxaction 3.3 漏洞接口 通过分析发现 /json/setup-restore.action 接口可以未授权访问,而正常情况下应该只能通过 /setup/setup-restore.action 访问。 4. 漏洞利用 4.1 未授权恢复备份 准备一个修改过密码的站点备份文件 访问 /json/setup-restore.action 接口 上传备份文件进行恢复 使用备份中的管理员凭证登录 注意 :空备份会导致数据清空,必须使用有效的站点备份文件。 4.2 远程代码执行 登录后台后,进入"管理应用" 使用"上传应用"功能上传恶意插件 通过插件实现任意命令执行 5. 防护措施 及时升级到最新版本 限制对Confluence管理接口的访问 实施网络隔离,限制外部访问Confluence管理端口 定期备份数据 6. 参考资源 环境搭建资源: 百度网盘链接 提取码: asbw 官方安全公告: Atlassian安全公告 GitHub PoC参考: CVE-2023-22515_ RCE 7. 免责声明 本文仅供学习研究使用,任何利用此漏洞进行的非法行为都与作者无关。请在法律允许范围内使用这些信息。