Atlassian Confluence 远程代码执行漏洞原理层面补充分析(CVE-2023-22518)
字数 2288 2025-08-24 07:48:10
Atlassian Confluence 远程代码执行漏洞分析(CVE-2023-22518) 教学文档
漏洞概述
CVE-2023-22518是Atlassian Confluence中的一个严重漏洞,本质上是认证绕过漏洞,攻击者可利用该漏洞绕过认证调用高危接口,最终可能导致远程代码执行(RCE)。该漏洞影响多个Confluence版本,允许未授权攻击者重置系统并获取管理员权限。
环境搭建
使用Docker搭建漏洞环境
- 选择存在漏洞的镜像版本:
atlassian/confluence:8.5.2-ubuntu-jdk11 - 创建
docker-compose.yml文件:
version: '2'
services:
web:
image: atlassian/confluence:8.5.2-ubuntu-jdk11
ports:
- "8090:8090"
- "5005:5005"
depends_on:
- db
db:
image: postgres:10.7-alpine
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=confluence
ports:
- "5432:5432"
- 为远程调试修改环境变量:
- 编辑
/opt/atlassian/confluence/bin/setenv.sh - 在
export CATALINA_OPTS前添加:CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 ${CATALINA_OPTS}" - 重启容器使配置生效
- 编辑
IDEA调试设置
- 下载同版本Confluence安装包(tar.gz格式)
- 用IDEA打开目录
- 将以下目录添加为库:
Confluence/confluence/WEB-INF/libConfluence/confluence/WEB-INF/atlassian-bundled-pluginsConfluence/confluence/WEB-INF/atlassian-bundled-plugins-setup
- 添加Remote JVM Debug运行配置
漏洞原理深度分析
认证鉴权机制缺陷
Confluence使用两个关键Interceptor完成接口认证鉴权:
- PermissionCheckInterceptor - 检查用户是否登录及是否有权限访问目标页面
- WebSudoInterceptor - 检查需要管理员权限的操作是否已完成二次认证
PermissionCheckInterceptor缺陷
- 调用
confluenceAction.isPermitted()方法进行权限检查 - 如果Action未重写
isPermitted()方法(如EditTrustedApplicationAction等),则调用父类ConfluenceActionSupport.isPermitted() ConfluenceActionSupport.isPermitted()会:- 获取登录用户权限集
- 检查是否有
USECONFLUENCE权限
- 存在后门:可通过
setSkipAccessCheck()方法绕过校验- 请求时添加
skipAccessCheck=true参数即可绕过 - 示例:
http://ip:port/json/trustedapp-view.action?skipAccessCheck=true
- 请求时添加
- 部分类直接重写
isPermitted()返回true,无需任何参数即可绕过认证(如SetupRestoreAction)
WebSudoInterceptor缺陷
-
检查URL路径:
- 以
/admin/开头:默认需要管理员二次登录,除非有@WebSudoNotRequired注解 - 不以
/admin/开头:默认不需要二次登录,除非有@WebSudoRequired注解
- 以
-
关键问题:
struts.xml中使用package extends语法:/admin路由集合继承/setup路由集合/json路由集合继承/admin路由集合
- 因此可通过
/json前缀访问/setup和/admin命名空间下的接口 WebSudoInterceptor认为/json路由下的接口默认不需要二次登录- 使用
validatingStack而非validatingSetupStack,绕过了SetupCheckInterceptor的安装校验
可利用的Action类
以下Action类未正确实现权限检查,可被利用:
EditTrustedApplicationActionViewTrustedApplicationsActionForceUpgradeActionAttachmentMigrationActionContentRemigrationActionFlushCacheActionSetupRestoreFileActionSetupRestoreAction- 最终用于重置系统获取管理员权限的关键类
漏洞利用流程
- 找到未正确实现权限检查的Action类(如
SetupRestoreAction) - 通过
/json路由访问这些接口,绕过认证和权限检查 - 使用
SetupRestoreAction重置系统 - 获取管理员权限
- 通过后台上传恶意应用实现RCE
防御措施
- 及时更新到Atlassian官方发布的安全补丁
- 限制对Confluence管理界面的访问
- 实施网络隔离,仅允许必要用户访问Confluence服务
- 监控异常的系统重置操作
- 定期审计系统日志,检测可疑活动
总结
CVE-2023-22518漏洞的根源在于Confluence的认证鉴权机制存在设计缺陷,特别是:
PermissionCheckInterceptor的可绕过性WebSudoInterceptor的路由检查不严谨struts.xml中的路由继承关系导致权限检查被绕过
这些缺陷组合在一起,使得攻击者能够完全绕过认证系统,访问高危操作接口,最终导致系统被完全控制。