简述
- RMI 数据传输基于反序列化,如果服务中实现了 RMI 的调用且具有 Object
类型参数,那么就会造成反序列化(实际攻击中需要反序列化链) - JMX 服务是基于 RMI 实现,且将凭证对象作为Object 参数传入,如果使用恶意构造的对象替代凭证传入,是否能攻击需要凭证认证的
JMX 服务了。
针对 JMX 的攻击
- YSO 中有一个针对 JMX 的攻击模块,当 JMX 服务器存在反序列化链时,可以对JMX服务进行攻击
java -cp ysoserial.jar ysoserial.exploit.JMXInvokeMBean 192.168.8.2 1689 CommonsCollections1 gnome-calculator
JMX 服务基于 RMI 实现,在分析其源码时发现,JMX RMIServer 中,存在有 newClient 方法的参数为 Object 对象,存在 RMI 反序列化条件。
且将newClient 参数为 credentials 凭证对象,那么是否可以使用恶意对象替代凭证传入,攻击需要凭证认证的 JMX 服务了。
具有Object 类型参数,会参数进行反序列化
环境搭建
环境配置
启动参数中添加
-Dcom.sun.management.jmxremote.port=2222 -Djava.rmi.server.hostname=192.168.8.1 -Dcom.sun.management