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
marshalsec — Strumento di sfruttamento della vulnerabilità di deserializzazione Java con generatori di payload per molteplici marshaller (Jackson, XStream, SnakeYAML) e indirezione del riferimento JNDI per l'esecuzione remota di codice. | Kitploit
Strumenti/GitHubGitHub/mbechler/marshalsec
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingPaper e RicercaApprendimento e FormazioneRed TeamingSviluppo Payload
GitHubmbechler/marshalsec

marshalsec

Strumento di sfruttamento della vulnerabilità di deserializzazione Java con generatori di payload per molteplici marshaller (Jackson, XStream, SnakeYAML) e indirezione del riferimento JNDI per l'esecuzione remota di codice.

3.7k6781 anno faRevisionato da Kitploit

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

Java Unmarshaller Security - Trasformare i tuoi dati in esecuzione di codice

Se sei arrivato qui per Log4Shell/CVE-2021-44228, potresti voler leggere i vettori di sfruttamento e le versioni del runtime Java interessate: https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/

Paper

Sono passati più di due anni da quando Chris Frohoff e Garbriel Lawrence hanno presentato la loro ricerca sulle vulnerabilità di deserializzazione degli oggetti Java, che alla fine ha portato a quella che può essere giustamente descritta come la più grande ondata di bug di esecuzione remota di codice nella storia di Java.

La ricerca su questo argomento ha indicato che queste vulnerabilità non sono esclusive di meccanismi espressivi come la serializzazione Java o XStream, ma alcune potrebbero essere applicate anche ad altri meccanismi.

Questo paper presenta un'analisi, inclusi i dettagli di sfruttamento, di varie librerie di marshalling open-source Java che consentono(no) l'unmarshalling di tipi arbitrari forniti dall'attaccante e mostra che, indipendentemente da come viene eseguito questo processo e da quali vincoli impliciti sono in atto, è soggetto a tecniche di sfruttamento simili.

Il paper completo è disponibile all'indirizzo marshalsec.pdf

Disclaimer

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

Utilizzo

Richiede Java 8. Compila con Maven mvn clean package -DskipTests. Esegui come

root@kitploit:~
java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.<Marshaller> [-a] [-v] [-t] [<gadget_type> [<arguments...>]]

dove

  • -a - genera/testa tutti i payload per quel marshaller
  • -t - esegue in modalità test, eseguendo l'unmarshalling dei payload generati dopo la loro generazione.
  • -v - modalità verbosa, ad esempio mostra anche il payload generato in modalità test.
  • gadget_type - Identificatore di un gadget specifico; se omesso, vengono mostrati quelli disponibili per quello specifico marshaller.
  • arguments - Argomenti specifici del gadget

Sono inclusi i generatori di payload per i seguenti marshaller:

Argomenti e prerequisiti aggiuntivi

Esecuzione di comandi di sistema

  • cmd - comando da eseguire
  • args... - parametri aggiuntivi passati come argomenti

Nessun prerequisito.

Classloading remoto (semplice)

  • codebase - URL del codebase remoto
  • class - Classe da caricare

Prerequisiti:

  • Configurare un webserver che ospiti un classpath Java in un determinato percorso.
  • I file di classe compilati da caricare devono essere serviti secondo le convenzioni del classpath Java.

Classloading remoto (ServiceLoader)

  • service_codebase - URL del codebase remoto

Il servizio da caricare è attualmente hardcoded su javax.script.ScriptEngineFactory.

Prerequisiti:

  • Come per il classloading remoto semplice.
  • Serve inoltre un file di configurazione del provider in /META-INF/javax.script.ScriptEngineFactory contenente il nome della classe target in testo semplice.
  • La classe target specificata deve implementare l'interfaccia di servizio javax.script.ScriptEngineFactory.

Indirezione di riferimento JNDI

  • jndiUrl - URL JNDI su cui attivare la lookup

Prerequisiti:

  • Configurare un codebase remoto, come per il classloading remoto.
  • Eseguire un servizio di reindirizzamento dei riferimenti JNDI che punti a quel codebase: sono incluse due implementazioni: marshalsec.jndi.LDAPRefServer e RMIRefServer.
    root@kitploit:~
    java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.jndi.(LDAP|RMI)RefServer <codebase>#<class> [<port>]
    
  • Usare (ldap|rmi)://host:porta/obj come jndiUrl, puntando all'indirizzo di ascolto di quel servizio.

Esecuzione dei test

Ci sono alcune proprietà di sistema che controllano gli argomenti durante l'esecuzione dei test (tramite Maven o usando -a)

  • exploit.codebase, il cui default è http://localhost:8080/
  • exploit.codebaseClass, il cui default è Exploit
  • exploit.jndiUrl, il cui default è ldap://localhost:1389/obj
  • exploit.exec, il cui default è /usr/bin/gedit

I test vengono eseguiti con un SecurityManager installato che controlla l'esecuzione di comandi di sistema e il codice eseguito da codebase remoti. Affinché ciò funzioni, la classe caricata in uso deve attivare qualche controllo del security manager.

Scarica lo strumento
MarshallerImpatto del Gadget
BlazeDSAMF(0|3|X)escalation solo JDK verso la serializzazione Java
RCE di varie librerie di terze parti
Hessian|Burlapvarie RCE di terze parti
CastorRCE di librerie dipendenti
Jacksonpossibile RCE solo JDK, varie RCE di terze parti
Javaancora un'altra RCE di terze parti
JsonIORCE solo JDK
JYAMLRCE solo JDK
KryoRCE di terze parti
KryoAltStrategyRCE solo JDK
Red5AMF(0|3)RCE solo JDK
SnakeYAMLRCE solo JDK
XStreamRCE solo JDK
YAMLBeansRCE di terze parti