CVE-2020-17519 & CVE-2020-17518 分析

CVE-2020-17519

看到漏洞公告,http://mail-archives.apache.org/mod_mbox/www-announce/202101.mbox/browser

问题出在 REST API 上,且直接给出了 commit

在 github 上查看 https://github.com/apache/flink/commit/b561010b0ee741543c3953306037f00d7a9f0801

可以看到多了 new File().getName() 返回路径名的名称序列的最后一个名字,所以跳不到其他目录,修复了目录穿越问题。从字面意思上看,此时获取的参数是URI。

现在要找 source ,因为出问题的是 REST API 所以先看官方的文档:https://ci.apache.org/projects/flink/flink-docs-release-1.12/ops/rest_api.html,其中说了 org.apache.flink.runtime.webmonitor.WebMonitorEndpoint 是路由的类:

跟进。找到了 JobManagerCustomLogHandler,并发现了 JobManagerCustomLogHeaders 的实例化:

继续跟进 JobManagerCustomLogHeaders,最终发现了路由:

跟在 /jobmanager/logs/ 后的路径就是取得的参数,

搭建环境

漏洞原理基本分析清楚了,接下来就是搭建环境验证了,
dockerhub 上找了一下:

docker run -it  -p 8081:8081 morgel/flink:1.11.2-bin-scala_2.12-java_11 /bin/bash

然后

./bin/start-cluster.sh

搭建成功

测试

最后用了几种 payload 测试,测试成功

CVE-2020-17518

也是上面的步骤,看到 commit 的 https://github.com/apache/flink/commit/a5264a6f41524afe8ceadf1d8ddc8c80f323ebc4

修复方式还是一样的,说明也是目录穿越的点,直接看 api 文档,发现了一个上传点:

直接构造上传

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖