CVE-2022-26134 Confluence OGNL RCE 漏洞分析
字数 2276 2025-08-27 12:33:37

CVE-2022-26134 Confluence OGNL RCE 漏洞分析与利用指南

漏洞概述

CVE-2022-26134是Atlassian Confluence Server和Data Center中的一个严重远程代码执行漏洞,允许未经身份验证的攻击者通过构造特定的OGNL表达式实现任意代码执行。

影响版本

  • Confluence Server and Data Center >= 1.3.0
  • Confluence Server and Data Center < 7.4.17
  • Confluence Server and Data Center < 7.13.7
  • Confluence Server and Data Center < 7.14.3
  • Confluence Server and Data Center < 7.15.2
  • Confluence Server and Data Center < 7.16.4
  • Confluence Server and Data Center < 7.17.4
  • Confluence Server and Data Center < 7.18.1

环境搭建

使用Docker搭建测试环境

  1. 使用docker-compose文件启动环境:

    docker-compose up -d
    
  2. 查看容器ID和相关信息(5050为远程调试端口)

  3. 将容器中的Confluence源码复制到本地:

    docker cp <container_id>:/opt/atlassian/confluence /local/path
    

配置IDEA调试环境

  1. 将以下目录添加为依赖文件:

    • /confluence/WEB-INF/atlassian-bundled-plugins
    • /confluence/WEB-INF/atlassian-bundled-plugins-setup
    • /confluence/WEB-INF/lib
  2. 修改容器中的/opt/atlassian/confluence/bin/setenv.sh文件,添加远程调试配置

  3. 访问http://IP:8090进行初始配置(需要Confluence官网证书)

漏洞分析

请求处理流程

  1. 访问/login.action等端点
  2. 请求经过一系列Filter处理
  3. 进入Servlet分发器:com.opensymphony.webwork.dispatcher.ServletDispatcher

关键函数分析

  1. ServletDispatcher通过以下函数获取值:

    • getNameSpace
    • getActionName
    • getRequestMap
    • getSessionMap
    • getApplicationMap
  2. getNamespace函数分析:

    • 调用com.atlassian.plugin.servlet.PluginHttpRequertWrapper#getServletPath获取servletPath
    • 进入getNamespaceFromServletPath函数
    • 通过字符串截取,namespace取值为请求servletPath最后一个"/"之前的部分
  3. 执行流程:

    • com.opensymphony.webwork.dispatcher.ServletDispatcher#serviceAction
    • com.opensymphony.xwork.DefaultActionProxy#execute
    • com.opensymphony.xwork.DefaultActionlnvocation#invoke
    • com.opensymphony.xwork.interceptor.Aroundlnterceptor#intercept
  4. OGNL表达式解析:

    • com.opensymphony.xwork.ActionChainResult#execute获取namespace值
    • translateVariables函数解析OGNL表达式
    • com.opensymphony.xwork.util.TextParseUtil#translateVariables
    • com.opensymphony.xwork.util.OgnlValueStack#findValue最终解析表达式

漏洞复现

基本利用

使用payload格式:/${OGNL表达式}/

例如:/${4*4}/ 将返回16,证明OGNL表达式被执行

命令执行

构造特定的OGNL表达式可实现任意命令执行,例如:

/${@java.lang.Runtime@getRuntime().exec("whoami")}/

修复建议

  1. 升级到安全版本:

    • 7.4.17
    • 7.13.7
    • 7.14.3
    • 7.15.2
    • 7.16.4
    • 7.17.4
    • 7.18.1或更高版本
  2. 下载地址:
    https://www.atlassian.com/software/confluence/download-archives

沙箱绕过分析(v7.15+)

从v7.15开始,Confluence在OGNL解析中加入了沙箱限制:

  1. 采用黑名单和白名单机制
  2. 限制为静态方法调用
  3. 绕过技巧:
    • 利用白名单中允许的静态方法
    • 利用沙箱逻辑缺陷实现方法调用

参考材料

  1. Rapid7分析:
    https://attackerkb.com/topics/BH1D56ZEhs/cve-2022-26134/rapid7-analysis

  2. Tarlogic分析:
    https://www.tarlogic.com/blog/cve-2022-26134-zero-day-vulnerability-affecting-atlassian-confluence/

CVE-2022-26134 Confluence OGNL RCE 漏洞分析与利用指南 漏洞概述 CVE-2022-26134是Atlassian Confluence Server和Data Center中的一个严重远程代码执行漏洞,允许未经身份验证的攻击者通过构造特定的OGNL表达式实现任意代码执行。 影响版本 Confluence Server and Data Center >= 1.3.0 Confluence Server and Data Center < 7.4.17 Confluence Server and Data Center < 7.13.7 Confluence Server and Data Center < 7.14.3 Confluence Server and Data Center < 7.15.2 Confluence Server and Data Center < 7.16.4 Confluence Server and Data Center < 7.17.4 Confluence Server and Data Center < 7.18.1 环境搭建 使用Docker搭建测试环境 使用docker-compose文件启动环境: 查看容器ID和相关信息(5050为远程调试端口) 将容器中的Confluence源码复制到本地: 配置IDEA调试环境 将以下目录添加为依赖文件: /confluence/WEB-INF/atlassian-bundled-plugins /confluence/WEB-INF/atlassian-bundled-plugins-setup /confluence/WEB-INF/lib 修改容器中的 /opt/atlassian/confluence/bin/setenv.sh 文件,添加远程调试配置 访问 http://IP:8090 进行初始配置(需要Confluence官网证书) 漏洞分析 请求处理流程 访问 /login.action 等端点 请求经过一系列Filter处理 进入Servlet分发器: com.opensymphony.webwork.dispatcher.ServletDispatcher 关键函数分析 ServletDispatcher 通过以下函数获取值: getNameSpace getActionName getRequestMap getSessionMap getApplicationMap getNamespace 函数分析: 调用 com.atlassian.plugin.servlet.PluginHttpRequertWrapper#getServletPath 获取servletPath 进入 getNamespaceFromServletPath 函数 通过字符串截取,namespace取值为请求servletPath最后一个"/"之前的部分 执行流程: com.opensymphony.webwork.dispatcher.ServletDispatcher#serviceAction com.opensymphony.xwork.DefaultActionProxy#execute com.opensymphony.xwork.DefaultActionlnvocation#invoke com.opensymphony.xwork.interceptor.Aroundlnterceptor#intercept OGNL表达式解析: com.opensymphony.xwork.ActionChainResult#execute 获取namespace值 translateVariables 函数解析OGNL表达式 com.opensymphony.xwork.util.TextParseUtil#translateVariables com.opensymphony.xwork.util.OgnlValueStack#findValue 最终解析表达式 漏洞复现 基本利用 使用payload格式: /${OGNL表达式}/ 例如: /${4*4}/ 将返回16,证明OGNL表达式被执行 命令执行 构造特定的OGNL表达式可实现任意命令执行,例如: 修复建议 升级到安全版本: 7.4.17 7.13.7 7.14.3 7.15.2 7.16.4 7.17.4 7.18.1或更高版本 下载地址: https://www.atlassian.com/software/confluence/download-archives 沙箱绕过分析(v7.15+) 从v7.15开始,Confluence在OGNL解析中加入了沙箱限制: 采用黑名单和白名单机制 限制为静态方法调用 绕过技巧: 利用白名单中允许的静态方法 利用沙箱逻辑缺陷实现方法调用 参考材料 Rapid7分析: https://attackerkb.com/topics/BH1D56ZEhs/cve-2022-26134/rapid7-analysis Tarlogic分析: https://www.tarlogic.com/blog/cve-2022-26134-zero-day-vulnerability-affecting-atlassian-confluence/