【Web实战】 Atlassian Confluence CVE-2023-22518/22515 Getshell 速通
字数 1617 2025-08-10 08:28:47
Atlassian Confluence CVE-2023-22518/22515 Getshell 漏洞分析与利用指南
漏洞概述
Atlassian Confluence 存在两个高危漏洞:
- CVE-2023-22518:未授权访问漏洞
- CVE-2023-22515:远程代码执行漏洞
这两个漏洞组合利用可以实现从零权限到获取服务器完整控制权的攻击链。
漏洞分析
漏洞原理
CVE-2023-22518 是一个未授权访问漏洞,利用的是 XframeWork2 的 getter 特性。攻击者可以未授权访问管理员权限的接口 /json/setup-restore.action,该接口用于系统恢复。
漏洞路由
关键漏洞路由:
/json/setup-restore.action- 未授权恢复接口/json/backup.action- 备份接口
技术细节
-
未授权访问原因:
/json路由继承了 admin 路由,但配置错误导致不需要鉴权isProtected属性由methodRequiresProtection方法赋值- 通过添加请求头
X-Atlassian-Token: no-check可以绕过保护
-
恢复流程:
- 接口会获取请求体中上传的 ZIP 文件
- 调用
getExportDescriptor方法处理 - 创建
Unzipper类进行解压操作 - 检查 ZIP 文件中必须包含
exportDescriptor.properties文件
漏洞利用步骤
准备工作
-
准备两个 Confluence 实例:
- 攻击者控制的本地实例(版本需与目标一致,如8.5.1)
- 目标实例
-
在本地实例创建管理员账户(如 admin/admin)
第一步:创建恶意备份文件
-
通过本地 Confluence 的
/json/backup.action接口创建备份(不要使用界面导出的备份,因为其exportType为 site) -
确保备份文件包含:
exportDescriptor.properties文件,且包含以下属性:exportType=ALL createdByBuildNumber=<构建号> buildNumber=<构建号>entities.xml文件(包含系统配置和用户数据)
第二步:利用未授权漏洞上传恢复
-
构造 POST 请求到目标服务器的
/json/setup-restore.action,包含以下内容:- 请求头:
X-Atlassian-Token: no-check - 请求体:包含上述准备的恶意备份 ZIP 文件
- 请求头:
-
确保请求参数
isSynchronous=true以使恢复操作同步执行
第三步:获取管理员权限
- 恢复完成后,目标系统的管理员账户将被替换为你本地实例的账户(如 admin/admin)
- 使用这些凭据登录目标 Confluence 后台
第四步:通过插件实现 RCE
- 在后台插件管理页面,上传恶意插件(如从 confluence-hack 获取)
- 插件可以实现:
- 简单的命令执行
- 或修改为支持哥斯拉等Webshell连接
失败的利用尝试
-
ZIP Slip 尝试:
- 尝试构造包含路径遍历的 ZIP 文件
- 被
isChildOf检查阻止,无法实现任意文件写入
-
手动构造 ZIP:
- 缺少必要的备份文件结构和内容
- 无法通过恢复流程的验证
漏洞影响与限制
-
破坏性:
- 这是"自爆式"漏洞利用,会完全覆盖目标系统数据
- 原有文库内容将丢失,仅保留攻击者提供的数据
-
适用场景:
- 目标文库数据不重要,仅需要获取服务器权限
- 作为破坏性攻击手段
防御建议
- 及时升级到最新版本
- 限制
/json路由的访问权限 - 监控系统恢复操作
- 实施网络隔离,限制 Confluence 管理接口的访问
总结
CVE-2023-22518 和 CVE-2023-22515 组合提供了一个完整的攻击链,从未授权访问到完全控制系统。虽然利用效果强大,但具有破坏性,在实际渗透测试中应谨慎使用,评估业务影响。