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
ermir — Registro RMI malicioso que explota la deserialización insegura de Java mediante los métodos list/lookup/bind. Genera y entrega gadgets de Ysoserial para desencadenar la ejecución remota de código en clientes vulnerables. | Kitploit
Herramientas/GitHubGitHub/hakivvi/ermir
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónPruebas de Penetración
GitHubhakivvi/ermir

ermir

Registro RMI malicioso que explota la deserialización insegura de Java mediante los métodos list/lookup/bind. Genera y entrega gadgets de Ysoserial para desencadenar la ejecución remota de código en clientes vulnerables.

Ver Repositorio
5042hace 3 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

Ermir

Ermir es un Registro RMI Malicioso/Pícaro, explota la deserialización insegura en cualquier código Java que llame a métodos RMI estándar sobre él (list()/lookup()/bind()/rebind()/unbind()).

Requisitos

  • Ruby v3 o superior.

Instalación

Instala Ermir desde rubygems.org:

root@kitploit:~
$ gem install ermir

o clona el repositorio y construye la gema:

root@kitploit:~
$ git clone https://github.com/hakivvi/ermir.git
$ rake install

Uso

Ermir es una gema de línea de comandos, viene con 2 archivos CLI ermir y gadgetmarshal, ermir es la gema en sí y el último es solo una interfaz atractiva para el archivo GadgetMarshaller.java que reescribe los gadgets de Ysoserial para que coincidan con los requisitos de MarshalInputStream. La salida debe ser luego canalizada a ermir o a un archivo. En caso de gadgets personalizados, usa MarshalOutputStream en lugar de ObjectOutputStream para escribir tu objeto serializado en el flujo de salida.

Uso de ermir:

root@kitploit:~
➜  ~ ermir
Ermir by @hakivvi * https://github.com/hakivvi/ermir.
Info:
    Ermir is a Rogue/Evil RMI Registry which exploits unsecure Java deserialization on any Java code calling standard RMI methods on it.
Usage: ermir [options]
    -l, --listen   bind the RMI Registry to this ip and port (default: 0.0.0.0:1099).
    -f, --file     path to file containing the gadget to be deserialized.
    -p, --pipe     read the serialized gadget from the standard input stream.
    -v, --version  print Ermir version.
    -h, --help     print options help.
Example:
    $ gadgetmarshal /path/to/ysoserial.jar Groovy1 calc.exe | ermir --listen 127.0.0.1:1099 --pipe

Uso de gadgetmarshal:

root@kitploit:~
➜  ~ gadgetmarshal
Usage: gadgetmarshal /path/to/ysoserial.jar Gadget1 cmd (optional)/path/to/output/file

¿Cómo funciona?

java.rmi.registry.Registry ofrece 5 métodos: list(), lookup(), bind(), rebind(), unbind():

  • public Remote lookup(String name): lookup() busca un objeto vinculado en el registro por su nombre. El registro devuelve un objeto Remote que referencia al objeto remoto buscado. El objeto devuelto se lee usando MarshalInputStream.readObject(), que es solo otra capa sobre ObjectInputStream. Básicamente, espera después de cada descriptor de clase/proxy (TC_CLASSDESC/TC_PROXYCLASSDESC) una URL que se usará para cargar esa clase o clase proxy. Este es el mismo error salvaje que fue corregido en jdk7u21. (Ermir no especifica esta URL, ya que solo las versiones antiguas de Java son vulnerables; en su lugar, escribe null). Como los gadgets de Ysoserial se serializan usando ObjectOutputStream, Ermir usa gadgetmarshal —un envoltorio alrededor de GadgetMarshaller.java— para serializar el gadget especificado de modo que coincida con los requisitos de MarshalInputStream. image

  • public String[] list(): list() pide al registro todos los nombres de objetos vinculados. Si bien el tipo String no puede ser sustituido por un gadget malicioso porque no es como cualquier objeto común y no se lee usando readObject() sino readUTF(), sin embargo, como list() devuelve String[] que es un objeto real y se lee usando readObject(), Ermir envía el gadget en lugar de este tipo String[]. image

  • public void bind(java.lang.String $param_String_1, java.rmi.Remote $param_Remote_2): bind() vincula un objeto a un nombre en el registro. En el caso de bind(), el tipo de retorno es void y no se devuelve nada. Sin embargo, si el registro especifica en el paquete de datos de retorno RMI que este retorno es un retorno excepcional, el cliente/servidor cliente llamará a readObject() a pesar de que el tipo de retorno sea void. Así es como el registro envía excepciones a su cliente (normalmente java.lang.ClassNotFoundException). Una vez más, Ermir entregará el gadget serializado en lugar de un objeto Exception legítimo. image

  • public void rebind(java.lang.String $param_String_1, java.rmi.Remote $param_Remote_2): rebind() reemplaza el enlace del nombre pasado con la referencia remota suministrada. También devuelve void. Ermir retorna una excepción como en bind().

  • public void unbind(java.lang.String $param_String_1): unbind() desvincula un objeto remoto por nombre en el registro RMI. Este también devuelve void.

PoC

ermir

Contribuciones

Los informes de errores y las solicitudes de extracción son bienvenidos en GitHub en https://github.com/hakivvi/ermir. Este proyecto pretende ser un espacio seguro y acogedor para la colaboración, y se espera que los contribuyentes se adhieran al código de conducta.

Licencia

La gema está disponible como código abierto bajo los términos de la Licencia MIT.

Código de Conducta

Se espera que todos los que interactúan en los códigos base, rastreadores de incidencias, salas de chat y listas de correo del proyecto Ermir sigan el código de conducta.

Descargar herramienta