Flink 任意文件读取和写入
一、前言
Apache Flink 两个高危漏洞(CVE-2020-17518&CVE-2020-17519),分别是任意文件写入和任意文件读取.
二、commit 分析
原代码
String filename = handlerRequest.getPathParameter(LogFileNamePathParameter.class);
补丁
String filename = new File(handlerRequest.getPathParameter(LogFileNamePathParameter.class)).getName();
通过补丁代码,粗略知道handlerRequest变量可控, 能够实现任意文件读取.
原代码
final Path dest = currentUploadDir.resolve(new File(fileUpload.getFilename()).getName());
fileUpload.renameTo(dest.toFile());
补丁
final Path dest = currentUploadDir.resolve(new File(fileUpload.getFilename()).getName()); fileUpload.renameTo(dest.toFile());
通过补丁代码, 粗略知道fileUpload变量可控, 能够实现任意文件写入.
三、服务搭建 & 路由信息获取
服务搭建
1、下载包flink
2、开启 jdwp 端口
修改 cong/flink-conf.yaml 文件,增加
env.java.opts.jobmanager: "-age