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


信息

影响版本:Dubbo < 2.7.5

条件:

时间:

复现环境:
win10 + jdk1.8 + idea 2019.2.4(用来搭建dubbo) + zookeeper 3.4.10

复现版本:Dubbo 2.7.3

版本探测:

漏洞环境的搭建

1. idea的下载安装
下载并且安装idea,我的是收费版的(网上有破解教程),如果只是为了快速复现漏洞,那么试用30天后直接看下一步好了。


2. zookeeper的下载及启动
①dubbo需要配合zookeeper使用,下载zookeeper,地址:
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

②在解压后的文件夹zookeeper-3.4.10里面创建 data和logs目录

②修改 conf目录下的zoo_sample.cfg为zoo.cfg
并且修改zoo.cfg,如下添加

Snipaste_2020-03-07_21-55-43.jpg

③ 双击bin目录下的 zkServer.cmd,启动,zookeeper会监听2181端口

Snipaste_2020-03-07_2Snipaste_2020-03-07_21-59-12.jpg1-59-12.jpg

3. dubbo的启动

①下载github里dubbo的demo
https://github.com/apache/dubbo-samples/tree/master/java/dubbo-samples-http

②修改dubbo-samples-http里面的pom.xml

首先版本改为2.7.3

其次添加依赖

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

Snipaste_2020-03-07_22-04-44.jpg


②用idea导入,"File"->"New"->"Project from existing resources" ->选择目录"dubbo-samples-http"里面的pom.xml

③这个时候如果直接下载的话会很慢很慢,尝试更换源(建议必换)

右键导入的项目名,点击"Maven"。点击"Create setting.xml",用下面内容直接全部替换掉

加速源

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
        <!-- mirror
         | Specifies a repository mirror site to use instead of a given repository. The repository that
         | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
         | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
         |
        <mirror>
          <id>mirrorId</id>
          <mirrorOf>repositoryId</mirrorOf>
          <name>Human Readable Name for this Mirror.</name>
          <url>http://my.repository.com/repo/path</url>
        </mirror>
         -->

        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

        <mirror>
            <id>uk</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://uk.maven.org/maven2/</url>
        </mirror>

        <mirror>
            <id>CN</id>
            <name>OSChina Central</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

        <mirror>
            <id>nexus</id>
            <name>internal nexus repository</name>
            <!-- <url>http://192.168.1.100:8081/nexus/content/groups/public/</url>-->
            <url>http://repo.maven.apache.org/maven2</url>
            <mirrorOf>central</mirrorOf>
        </mirror>

    </mirrors>
</settings>

Snipaste_2020-03-07_22-07-01.jpg

③ 重启idea,点击项目中的pom.xml,"Maven"->"Reimport"就可以下载依赖,很快很快就会被下载完成
4.坑点
当看到"dubbo service started"就说明成功了。

Snipaste_2020-03-07_22-12-47.jpg

如果你的ip也正确的话,那么下面一段话就不用看了,直接看攻击步骤就好了。
仔细观察他给你的url中的ip。一开始我的ip是我一个虚拟网卡的ip,我不能访问。
搜索之后,要修改dubbo的配置文件来绑定自己的ip,这里贴出我的配置,配置文件dubbo-samples-http\src\main\resources\spring\http-provider.xml

Snipaste_2020-03-07_22-15-48.jpg

攻击

1.下载jar包
https://xiaokou.top/usr/uploads/file/ysoserial-master-30099844c6-1.jar

2.生成payload
java -jar ysoserial-master-30099844c6-1.jar CommonsCollections4 "calc" > calc.ser

3.burp发包
访问192.168.1.104:8080/org.apache.dubbo.samples.http.api.DemoService,burp截包

修改访问类型为POST,post的数据就是calc.ser的内容,这里不要打开calc.ser直接复制,用burp的"Paste from file"

Snipaste_2020-03-07_22-22-04.jpg

成功弹出计算器

Snipaste_2020-03-07_21-28-33.jpg

注意的地方

1.maven下载的时候一定要配置国内的源啊,不然要花费很长时间才能下载完依赖,而且真的不一定能下载完

2.配置完环境后,其实我们是没法访问8080端口看到东西的,因为只是一个provider端,并没有提供dubbo的全部功能。

3.发包的时候,不要直接打开calc.ser直接复制

4.dubbo启动后要看看自己的ip地址对不对


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM