confluence-CVE-2022-26134漏洞分析

百家 作者:Chamd5安全团队 2022-06-22 10:05:19

漏洞背景

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

SummaryCVE-2022-26134 - Critical severity unauthenticated remote code execution vulnerability in Confluence Server and Data Center
Advisory Release Date02 Jun 2022 1 PM PDT (Pacific Time, -7 hours)
Affected ProductsConfluenceConfluence ServerConfluence Data Center
Affected VersionsAll supported versions of Confluence Server and Data Center are affected.Confluence Server and Data Center versions after 1.3.0 are affected.
Fixed Versions7.4.17
7.13.7
7.14.3
7.15.2
7.16.4
7.17.4
7.18.1

所有版本的 Confluence 和 DataCenter 都会受影响

临时修复方式:

  • 7.15.0-7.18.0: 替换xwork-1.0.3-atlassian-10.jar文件
  • 6.0.0-7.14.2: 替换以下文件
    • xwork-1.0.3-atlassian-10.jar
    • webwork-2.1.5-atlassian-4.jar
    • CachedConfigurationProvider.class

代码分析

diff 补丁

xwork-1.0.3-atlassian-10.jar和低版本进行反编译 diff

区别在于将

finalNamespace = TextParseUtil.translateVariables(this.namespace, stack = ActionContext.getContext().getValueStack())
finalActionName = TextParseUtil.translateVariables(this.actionName, stack))

修改为

finalNamespace = this.namespace, 
finalActionName = this.actionName

少了TextParseUtil.translateVariables()的流程

该函数处理调用了

Object o = OgnlValueStack.findValue(g);

...

Ognl.getValue(OgnlUtil.compile(expr), this.context, this.root);

较为明显的ognl表达式注入,那我们来看一下具体的触发流程。

WebWork 框架分析

Confluence 使用 WebWork 框架,框架调用流转图, 整个 HTTP 请求逻辑是随着这个框架处理流程来的。

  1. 客户发起 HTTP 流程访问
  2. 按照 servlet 规范,先由 filter 进行处理,然后由 WebWork 核心控制器 ServletDispatcher 进行处理
  3. WebWork 根据 xwork.xml 配置文件 来处理请求:在配置文件中定义路由对应的拦截器,业务逻辑,业务逻辑响应等部分
  4. 先依次调用拦截器(before),然后再由业务逻辑处理
  5. 根据业务逻辑返回的响应类型对响应进行渲染
  6. 依次调用拦截器(after),然后将响应输出

confluence 在web.xml中引入WebWork框架配置

<servlet>
 <servlet-name>action</servlet-name>
 <servlet-class>com.atlassian.confluence.servlet.ConfluenceServletDispatcher</servlet-class>
 <load-on-startup>1</load-on-startup>
</servlet>


<servlet-mapping>
 <servlet-name>action</servlet-name>
 <url-pattern>*.action</url-pattern>
</servlet-mapping>

ConfluenceServletDispatcher基类com.opensymphony.webwork.dispatcher.ServletDispatcher

框架配置说明文件:xwork.xml文件,在 jar 包confluence-版本号.jar

对配置文件进行说明

一个Demo

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接