Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2020-1948 PoC — Apache Dubbo 代码问题漏洞

Source
Associated Vulnerability
Title:Apache Dubbo 代码问题漏洞 (CVE-2020-1948)
Description:Apache Dubbo是美国阿帕奇软件(Apache Software)基金会的一款基于Java的轻量级RPC(远程过程调用)框架。该产品提供了基于接口的远程呼叫、容错和负载平衡以及自动服务注册和发现等功能。 Apache Dubbo 2.7.6及之前版本中的反序列化工具hessian存在安全漏洞。远程攻击者可利用该漏洞执行代码。
Description
Apache Dubbo CVE-2020-1948 漏洞测试环境,亲测可用。
Readme
# Apache Dubbo CVE-2020-1948 测试环境

## 引子

在这个漏洞出现之初,为了验证该漏洞的危害,我们从互联网上搜寻了很多人整理的例子,发现没有一个能够顺利验证该漏洞,故自己搞了一个,放在这里供大家参考,欢迎交流!

本环境基于 Apache Dubbo 官方示例环境改造而来,纠正了官方示例程序中几处编译中报错问题。例如:

- 官方示例代码中应用的 DubboService 类,实际应该 Service。

## 编译

```
cd src
mvn package
```

编译成功后会在 `src/target` 目录生成 `dubbo.jar` 文件。

## 运行

```
java -jar target/dubbo.jar
```

运行成功后,监听 12345 端口,可以使用 `telnet` 命令连接测试。

```
telnet x.x.x.x 12345
# dubbo> ls -l
# PROVIDER:
#     org.apache.dubbo.spring.boot.sample.consumer.DemoService:1.0.0 ->  published: N
```

## 容器化

```
# 构建
docker build -t dsolab/dubbo:cve-2020-1948 .

# 运行
docker run -p 12345:12345 dsolab/dubbo:cve-2020-1948 -d
或
docker-compose up -d

# 访问
telnet x.x.x.x 12345
```

只想快速使用环境(懒得编译环境)的小朋友可以用下面的命令启动我们提供的镜像环境:

```
# 需要安装 Docker 和 docker-compose
docker-compose up -d
```

## 漏洞验证

参见 [Apache Dubbo CVE-2020-1948 反序列化漏洞验证方法](https://github.com/DSO-Lab/Dubbo-CVE-2020-1948/wiki)

## 参考链接

- Dubbo Spring Boot Project

https://github.com/apache/dubbo-spring-boot-project/

- Dubbo Pull Request

https://github.com/apache/dubbo/pull/6374

- Dubbo Mail Archive

https://www.mail-archive.com/dev@dubbo.apache.org/msg06544.html
File Snapshot

[4.0K] /data/pocs/99a91b5654aa3f99879c7ca64e448da2e485a7e8 ├── [ 148] docker-compose.yml ├── [ 315] Dockerfile ├── [1.6K] README.md └── [4.0K] src ├── [4.0K] dubbo-spring-boot-parent │   └── [ 19K] pom.xml ├── [4.0K] dubbo-spring-boot-samples │   ├── [4.0K] auto-configure-samples │   │   ├── [1.6K] pom.xml │   │   └── [4.0K] provider-sample │   │   ├── [3.2K] pom.xml │   │   └── [4.0K] src │   │   └── [4.0K] main │   │   ├── [4.0K] java │   │   │   └── [4.0K] org │   │   │   └── [4.0K] apache │   │   │   └── [4.0K] dubbo │   │   │   └── [4.0K] spring │   │   │   └── [4.0K] boot │   │   │   └── [4.0K] sample │   │   │   └── [4.0K] provider │   │   │   ├── [4.0K] bootstrap │   │   │   │   └── [1.5K] DubboAutoConfigurationProviderBootstrap.java │   │   │   └── [4.0K] service │   │   │   └── [2.0K] DefaultDemoService.java │   │   └── [4.0K] resources │   │   └── [ 515] application.properties │   ├── [3.2K] pom.xml │   └── [4.0K] sample-api │   ├── [1.5K] pom.xml │   └── [4.0K] src │   └── [4.0K] main │   └── [4.0K] java │   └── [4.0K] org │   └── [4.0K] apache │   └── [4.0K] dubbo │   └── [4.0K] spring │   └── [4.0K] boot │   └── [4.0K] sample │   └── [4.0K] consumer │   └── [ 978] DemoService.java └── [7.4K] pom.xml 29 directories, 13 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. If the original source is unavailable, please email f.jinxu#gmail.com for a local snapshot (replace # with @).
    3. Shenlong has snapshotted the POC code for you. To support long-term maintenance, please consider donating. Thank you for your support.