Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

admin 2023年6月28日16:59:35评论16 views字数 1425阅读4分45秒阅读模式

0x0 框架介绍

Apache Dubbo是一款微服务开发框架,它提供了RPC通信与微服务治理两大关键能力。使应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。

0x1 漏洞概述

CVE-2023-23638。由于Apache Dubbo对反序列化安全检查存在缺陷,远程攻击者通过构造恶意数据包进行反序列化攻击,最终可实现在目标系统上执行任意代码,请受影响的用户尽快采取措施进行防护。

0x2 影响范围

受影响范围

  • Apache Dubbo 7.x<= 2.7.21
  • Apache Dubbo 3.0.x<= 0.13
  • Apache Dubbo 3.1.x<= 1.5

0x3 利用思路

本文用到的官方参考链接:

https://github.com/apache/dubbo/commit/6e5c1f8665216ccda4b2eb8c0465882efe62dd61

https://github.com/apache/dubbo/commit/ce3b0e285a463b566a9d685049201bfaf526c8ac

https://github.com/apache/dubbo/commit/4f664f0a3d338673f4b554230345b89c580bccbb

对比下 commit 可以发现它增加了对 Seralizable 接口的检查, 在 >= 3.1.6 版本中这个选项默认是开启的, 也就是阻止了非 Serializable 接口实现类的序列化与反序列化

https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/security/class-check/

然后参考 Apache mailist 的内容可以发现漏洞点是 Generic Invoke, 也就是泛化调用

https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/generic-reference/

简单来说, 泛化调用可以使我们不依赖具体的接口 API, 就可以调用对应 Service 的某个方法

官方 samples 如下

https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-generic

以 3.1.5 版本为例

HelloService.java

Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

HelloServiceImpl.java

Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

DemoConsumer.java

Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

DemoProvider.java

Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

参考 commit 里面更改的内容, 关注 org.apache.dubbo.common.utils.PojoUtils#realize0 方法

Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

如果 pojo 属于 Map 类型, 就会将其中 class 键对应的内容取出来作为 className, 先通过 SerializeClassChecker 的 validateClass 进行过滤, 然后传入 forName 方法加载类

getInstance 方法

Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

然后注意对 INSTANCE 属性的定义

Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

很经典的单例模式

validateClass 方法

Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

篇幅原因我们下一篇继续跟大家来分享。

原文始发于微信公众号(小白嘿课):Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月28日16:59:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Apache Dubbo CVE-2023-23638反序列化漏洞利用分析(一)https://cn-sec.com/archives/1840579.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息