CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

admin 2025年2月13日10:27:31评论10 views字数 2151阅读7分10秒阅读模式
漏洞信息

Bonitasoft 从 Dockerhub 下载超过 500 万次,它是一个业务自动化平台,可以更轻松地在业务流程中构建、部署和管理自动化应用程序。

CVE-2022-25237 Bonitasoft Platform 存在 Auth AP I认证绕过漏洞,通过精心构造 payload 发送到特殊功能的 API URL,可导致远程代码执行。受影响版本如下:

For community(社区版):

  • 2022.1-u0 (7.14.0) 以下

For subscription(订阅版):

  • 2022.1-u0 (7.14.0) 以下

  • 2021.2-u4 (7.13.4) 以下

  • 2021.1-0307 (7.12.11) 以下

  • 7.11.7 以下

在分析认证绕过漏洞时,还发现了一处潜藏的未公开反序列化漏洞。下面将完整分析过程共享给大家。

环境准备

使用 docker 运行对应版本镜像。查看 Java 进程:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

添加远程调试配置:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

重启容器,查看是否开启 5000 调试端口,开放成功后配置 idea 指定调试端口:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

补丁对比

对比 `bonita:7.13.0` 和 `bonita:7.14.0` 版本,发现`bonita:7.14.0` 中删除了 `AbstractAuthorizationFilter` 类,该文件中包含 `Filter` 权限认证绕过逻辑:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

通过补丁对比,在 `web.xml` 中发现还增加了一处认证配置:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

这个配置主要是为 `/serverAPI/` 路由添加 `BASIC` 认证。

认证绕过漏洞

补丁分析中讲到,最新版的软件已经将 `AbstractAuthorizationFilter` 删掉,那么在 `AbstractAuthorizationFilter` 代码中明确指出了哪些路由不需要 `session`,在漏洞分析的时候主要关注 `isMatched` 赋值为 `true` 的那一行。`requestURL` 为用户请求的 `URL`, `contains` 只是简单匹配了路由是否包含 `excludePatterns`:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

其中 `excludePatterns` 在配置文件中赋值:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

上面3个鉴权 `Filter` 中的 `excludePatterns` 变量,必定包含 `i18ntranslation` 。`web.xml` 文件中配置了路由对应的 `Filter` 链,因为 `/API/*` 路由对应了  `RestAPIAuthorizationFilter` ,因此可以选择 `i18ntranslation` 作为权限绕过关键字:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

根据上面的分析,我们可以构造多种姿势的 URL 实现认证绕过:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

文件上传到 RCE

虽然有了 `Filter` 认证绕过,但并不意味着能在核心功能代码中完全实现认证绕过,从目前公开的 POC 来看,主要利用了管理员的权限上传恶意组件,核心 `servlet` 为 `FileUploadServlet`,其子类对应两个 `url` :

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

通过静态分析和动态调试, `FileUploadServlet` 在文件处理过程中需要获取 `session` 中的 `apiSession` 字段:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

然而问题是,如果不登陆, `Session` 中的 `apiSession` 就不会被赋值,获取该字段会抛异常。因此如果要使用该功能必须要配合用户登录的 `session` 才行。虽然访问 `/API/pageUpload` 需要管理员权限,但是结合 `Filter` 认证绕过,在普通用户下也可以访问,所以漏洞的准确描述应该为越权漏洞。这个漏洞的逻辑过程比较简单,这里就不过多叙述了,下面重点分析新发现的反序列漏洞。

反序列化漏洞

进入真正的主题。在分析复现 CVE-2022-25237 的过程中,注意到修复补丁增加了其他一些 `servlet` 的鉴权。根据 `web.xml` 配置信息,可知 `/serverAPI/` 路由对应的是 `HttpAPIServlet` ,关联的处理类为 `org.bonitasoft.engine.api.internal.servlet.HttpAPIServlet` :

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

定位 `doPost` 方法,判断了 `this.enabled` 变量,该变量在 docker 安装时默认为 `false`:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

需要在 docker 启动时添加环境变量,或者在系统启动时修改环境变量的默认值。检查完环境变量后,将调用 `callHttpApi` 函数, 接着进入 `HttpAPIServletCall#doPost` 方法:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

函数内部存在很多反序列化操作,主要包括 xstream XML 反序列化和 Java 原生反序列化:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

因为 xstream 版本为 v1.4.18,目前公开的利用链无法使用。重点关注存在原生反序列化过程的 `deserialize` 函数:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

按照代码处理流程构造数据包成功达到反序列化触发点:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

在项目依赖库中发现 bonitasoft 使用了 `commons-beanutils-1.9.4.jar`,可以参考公众号前面提到的不依赖 cc 链的 cb 利用链新的构造思路,同时结合 Tomcat 命令回显姿势,实现反序列化命令执行回显的效果:

CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。

原文始发于微信公众号(Th0r安全):CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月13日10:27:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2022-25237 Bonitasoft Platform 从认证绕过到未公开反序列化漏洞发现之旅https://cn-sec.com/archives/1067203.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息