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 文档,发现了一个上传点:
直接构造上传
没有评论