【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

渗透技巧 2年前 (2022) admin
696 0 0

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析


【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析
【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析
xxhzz
@PortalLab实验室


漏洞描述

最近 Confluence 官方通报了一个严重漏洞 CVE-2022-26134,远程攻击者在未经身份验证的情况下,可构造OGNL表达式进行注入,实现在Confluence Server或Data Center上执行任意代码。

利用范围

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-compose文件进行漏洞环境搭建。

version: '2'services:  web:    image: vulhub/confluence:7.13.6    ports:      - "8090:8090"      - "5050:5050"    depends_on:      - db  db:    image: postgres:12.8-alpine    environment:     - POSTGRES_PASSWORD=postgres    - POSTGRES_DB=confluence

使用命令docker-compose up -d成功启动环境后,查看容器id等相关信息(5050为远程调试端口)。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

进入容器后将/opt/atlassian目录下的confluence源码使用docker cp命令复制到本地。【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

使用IDEA将/confluence/WEB-INF下的atlassian-bundled-plugins、atlassian-bundled-plugins-setup、lib文件拉取为依赖文件。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

IDEA中配置远程调试。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

在容器中/opt/atlassian/confluence/bin目录下修改setenv.sh文件,加入远程调试配置。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

访问http://IP:8090,进行相关配置(需要登录confluence官网进行证书申请)。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

漏洞分析环境成功搭建。

漏洞复现

成功命令执行

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

漏洞分析

以登录请求为例,对confluence请求处理流程进行调试分析。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

首先访问/login.action,经过一系列Filter处理后,将进入Servlet 的分发器 ServletDispatcher。

com.opensymphony.webwork.dispatcher.ServletDispatcher

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

在ServletDispatcher中,通过getNameSpace 、getActionName 、 getRequestMap 、 getSessionMap 、 getApplicationMap函数 ,分别去获取对应的值。(使用payload=/${4*4}/)。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

重点分析getNamespace函数,其对应的值为namespace。

在com.opensymphony.webwork.dispatcher.ServletDispatcher#getNamespace中。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

通过调用com.atlassian.plugin.servlet.PluginHttpRequertWrapper#getServletPath函数,获取了请求servletPath的值。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

随后进入回到com.opensymphony.webwork.dispatcher.ServletDispatcher中进入getNamespaceFromServletPath函数。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

通过对字符串的截取 ,使得namespace 的取值为请求 servletPath 最后一个 / 之前的部分。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

根据com.opensymphony.webwork.dispatcher.ServletDispatcher#serviceAction函数。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

到com.opensymphony.xwork.DefaultActionProxy#execute,实例化 DefaultActionProxy 对象,调用其execute函数。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

随后进入com.opensymphony.xwork.DefaultActionlnvocation#invoke函数,通过Next获取拦截器对象。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

继续跟进来到com.opensymphony.xwork.interceptor.Aroundlnterceptor#intercept,发现invoke函数通过调用intercept方法,形成迭代循环。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

通过不断调试,发现在满足一定条件之后,将不会继续调用invoke函数,而是将返回 notpermitted  并赋值给 resultCode,跳出循环。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

随后进入com.opensymphony.xwork.ActionChainResult#execute函数。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

这里通过getNamespace获取namespace的值,前面我们已经分析出来:namespace的取值为请求servletPath最后一个/之前的部分。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

继续跟进,在com.opensymphony.xwork.ActionChainResult中,会调用translateVariables函数对OGNL表达式进行解析,表达式的值为namespace的取值。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

在com.opensymphony.xwork.util.TextParseUtil#translateVariables中。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

调用了com.opensymphony.xwork.util.OgnlValueStack#findValue函数对表达式进行解析。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

一系列操作之后,findValue返回的字符串为16。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

成功触发 OGNL 表达式注入。

【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

修复建议

建议升级到Atlassian Confluence Server and Data Center至安全版本。

下载链接:

https://www.atlassian.com/software/confluence/download-archives

沙箱绕过

从 v7.15 系列开始,Confluence 在 OGNL 表达式解析时加入了沙箱限制,采取了黑名单、白名单等方式。

绕过的技巧:白名单(限制为静态方法调用)中,仍然有一些静态方法可绕过沙箱限制或者沙箱本身逻辑上也存在相关缺陷可实现方法调用。

参考材料

1. https://www.little2pig.work/archives/cve-2022-26134

2. https://my.atlassian.com/products/index

3. https://attackerkb.com/topics/BH1D56ZEhs/cve-2022-26134/rapid7-analysis

4. https://cve.mitre.org/cgi-bin/cvename.cgi?name=2022-26134

5. https://www.tarlogic.com/blog/cve-2022-26134-zero-day-vulnerability-affecting-atlassian-confluence/

关于Portal Lab


星阑科技 Portal Lab 致力于前沿安全技术研究及能力工具化。主要研究方向为API 安全、应用安全、攻防对抗等领域。实验室成员研究成果曾发表于BlackHat、HITB、BlueHat、KCon、XCon等国内外知名安全会议,并多次发布开源安全工具。未来,Portal Lab将继续以开放创新的态度积极投入各类安全技术研究,持续为安全社区及企业级客户提供高质量技术输出。


【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

原文始发于微信公众号(星阑PortalLab):【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析

版权声明:admin 发表于 2022年6月8日 下午4:07。
转载请注明:【技术干货】CVE-2022-26134 Confluence OGNL RCE 漏洞分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...