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()
导致反序列化漏洞