CVE2019-17564 Apache Dubbo反序列化漏洞复现
0x00 Apache Dubbo介绍
一款开源的高性能服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo提供了面向接口的远程方法调用、只能容错和负载均衡、服务自动注册和发现。
0x01 漏洞影响版本
- 2.7.0 <= Apache Dubbo <= 2.7.4.1
- 2.6.0 <= Apache Dubbo <= 2.6.7
- Apache Dubbo = 2.5.x
0x02 环境配置
- github下载地址:https://github.com/apache/dubbo-samples
- 分离http部分:

- 下载Zookeeper: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
- 配置ZooKeeper:
(1) 修改conf/zoo.sample.cfg为zoo.cfg
此处的dataDir设置成非C盘目录即可,其他为默认配置

(2)cmd下启动bin/zkServer.cmd - IDEA配置:
(1)点击编辑配置:

(2)配置运行主类:

(3)修改jdk版本为1.8:

(4)修改pom.xml:
修改dubbo版本为受影响的版本:

添加commons-collections4-4.0: (使用4.4版本会报错)

(5)由于zookeeper会运行jetty默认在8080端口,而dubbo会运行tomcat也会占用8080端口,因此修改tomcat运行端口为9090:

(6)点击三角形符号即可运行dubbo服务

运行成功截图:

0x03 漏洞复现
- 漏洞复现
使用ysoserial.jar生成poc:
java -jar ysoserial.jar CommonsCollections4 "calc" > payload.out
burp导入poc文件post请求/org.apache.dubbo.samples.http.api.DemoService执行calc成功:

2. 漏洞原因
dubbo-2.7.3.jar!\org\apache\dubbo\rpc\protocol\http\HttpProtocol.class使用了handleRequest方法处理和响应请求

此处直接readObject()导致反序列化漏洞


浙公网安备 33010602011771号