JavaSec Remote Method Guesser
看了eki师傅的文章,rmi内容还是挺多的,有时间整理一下
攻击方法总结
攻击类型 | 适用jdk版本 | 需要条件 |
---|---|---|
加载远程类 | <7u21、6u45 | 无 |
加载远程类 | 任意 | SecurityManager allow/ java.rmi.server.useCodebaseOnly=false |
远程对象方法参数反序列化 | <8u242 | 远程对象参数除int、boolean等基本类外/服务端存在反序列化链 |
远程对象方法参数反序列化 | 任意 | 远程对象参数除int、boolean等基本类和String类外/远程对象环境存在反序列化链 |
Registry方法参数反序列化 | <8u121,7u13,6u141 | Registry端存在反序列化链 |
远程对象方法结果 | 任意 | 调用端存在反序列化环境 |
DGC方法返回值存在反序列化 | <8u121,7u13,6u141 | 调用端存在反序列化链 |
JRMI CALL 报错反序列化 | 任意 | 调用端存在反序列化链 |
Registry bind/rebind 触发JRMI CALL报错 | <8u231 | Registry存在反序列化链 |
Registry 方法参数反序列化触发JRMI CALL报错 | <8u241 | Registry存在反序列化链 |
Remote Method Guesser
qtc-de/remote-method-guesser: Java RMI Vulnerability Scanner (github.com)
一个很好用的rmi工具,基本包含了以上所有的攻击方法,这里改写一下serial攻击中的流程,添加一下自定义对象的传输
原先传递的恶意对象只能从yso中获取,可以添加一种b64和hex传入对象的方式,这样就可以支持自定义的序列化对象,用来绕过一些黑名单,或者达成一些特殊的攻击
src/de/qtc/rmg/plugin/DefaultProvider.java中添加自定义的参数处理,b64和hex
src/de/qtc/rmg/utils/RMGUtils.java中添加函数,从参数中获取path,并从指定路径中加载类
Reference
JAVA 协议安全笔记-RMI篇 - 跳跳糖 (tttang.com)
Java安全之RMI反序列化 - 先知社区 (aliyun.com)
Java反序列化RMI专题-没有人比我更懂RMI_哔哩哔哩_bilibili
qtc-de/remote-method-guesser: Java RMI Vulnerability Scanner (github.com)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 H4cking to the Gate .!
评论