内容提要
Apache Flink存在任意Jar包上传导致远程代码执行的高危漏洞,影响版本≤1.9.1。攻击者可通过上传恶意Jar包获取服务器shell。文章详细介绍了漏洞复现过程,包括生成payload、监听端口及上传步骤,并提供了批量检测脚本,同时提醒需使用公网IP及注意授权问题。
延伸解读
漏洞影响范围与利用条件
该漏洞影响Apache Flink 1.9.1及更早版本,攻击者可通过上传恶意Jar包实现远程代码执行。利用前提是目标Flink的Web界面(默认端口8081)可访问,且未授权或存在弱认证。复现时需使用公网IP生成payload,否则无法建立反向连接。若环境无公网IP,可借助内网穿透工具(如Sunny-ngrok)进行端口转发。
批量检测脚本的局限
文中提供的批量检测脚本通过访问/jar/upload接口并检查响应状态来判断是否存在未授权访问。但脚本注释掉部分代码后,可能将带授权的目标误判为存在漏洞。实际检测时需注意区分“Token为空”或“Unauthorized request”等响应,这些情况可能意味着需要认证,而非直接可利用。
安全建议与合规提醒
对于使用受影响版本的用户,建议尽快升级至1.9.1以上版本,并限制Flink Web界面的访问来源,避免暴露在公网。若必须开放,应启用认证并配置强密码。文中强调漏洞复现和检测脚本仅供研究学习,使用者需遵守《网络安全法》等法律法规,未经授权对他人系统进行测试属违法行为。
Q&A
Apache Flink 任意 Jar 包上传漏洞影响哪些版本?
该漏洞影响 Apache Flink 1.9.1 及更早版本(<= 1.9.1)。
Apache Flink 任意 Jar 包上传漏洞的危害是什么?
该漏洞被评定为高危,攻击者可通过上传恶意 Jar 包实现远程代码执行,获取服务器 shell。
如何复现 Apache Flink 任意 Jar 包上传漏洞?
复现步骤:1) 使用 msfvenom 生成恶意 Jar 包(如 java/shell_reverse_tcp);2) 在攻击机监听端口(如 nc -lvp port);3) 登录 Flink Web 界面,上传恶意 Jar 包;4) 触发后获得 shell。
复现 Apache Flink 漏洞时需要注意什么?
必须使用公网 IP 生成 payload,否则无法反弹 shell;若没有公网 IP,可使用 Sunny-ngrok 等工具进行端口转发。
有没有批量检测 Apache Flink 漏洞的脚本?
有,文章提供了批量检测脚本,来源于 GitHub,可读取 iplist.txt 中的 IP 列表,并发检测 8081 端口的 /jar/upload 路径,判断是否存在未授权访问。
使用 Apache Flink 漏洞检测脚本时如何判断是否存在未授权访问?
脚本会请求 /jar/upload 接口,若返回 JSON 数据则可能存在漏洞;若出现 Token 为空或 Unauthorized request,则说明需要授权,不存在未授权访问。
Apache Flink 任意 Jar 包上传漏洞的利用是否合法?
文章强调,漏洞利用 Poc 和脚本仅供研究学习使用,必须遵守《网络安全法》等相关法律法规,未经授权测试属于违法行为。