Rails ActiveSupport Exploit (cve-2019-5420) POC (¡considera esto para encadenar CVE-2019-5418!)
¡Combina a la perfección con CVE-2019-5418!
Captura de pantalla del POC
🚨 Advertencia
Este repositorio contiene un proof-of-concept (PoC) que demuestra la ejecución remota de código (RCE) en aplicaciones Ruby on Rails mediante el abuso de ActiveSupport::MessageVerifier. ¡Úsalo con responsabilidad!
📌 Resumen
Este script explota vulnerabilidades de deserialización en ActiveSupport aprovechando un objeto ERB manipulado envuelto en DeprecatedInstanceVariableProxy. Cuando la carga útil firmada es deserializada por una aplicación Rails vulnerable, se produce la ejecución arbitraria de código Ruby.
⚠️ Aviso legal
Este proyecto es solo para fines educativos y de investigación. El uso no autorizado contra sistemas que no te pertenecen es ilegal y puede acarrear graves consecuencias legales.
🛠️ Cómo funciona
1️⃣ Generar una clave secreta
El script deriva una `` del nombre de una aplicación Rails conocida mediante hash MD5.
2️⃣ Crear un secreto de ActiveStorage
Utiliza ActiveSupport::KeyGenerator para generar una clave de firma.
3️⃣ Crear un objeto ERB malicioso
Construye un objeto ``sin inicializar con código controlado por el atacante.
4️⃣ Envolverlo en DeprecatedInstanceVariableProxy
Oculta el objeto malicioso dentro de un envoltorio de apariencia inofensiva.
5️⃣ Firmar y generar un token de exploit
Utiliza ActiveSupport::MessageVerifier para firmar la carga útil, haciendo que parezca legítima.
6️⃣ Lograr la ejecución remota de código (RCE)
Al ser deserializada, Rails ejecuta la carga útil del atacante, permitiendo la ejecución arbitraria de comandos.
🚀 Uso
root@kitploit:~
ruby POC.rb
El script generará un token de exploit firmado, que puede utilizarse contra una aplicación Rails vulnerable.
🛡️ Mitigaciones
**Rota y protege `` para evitar que los atacantes generen cargas útiles firmadas.
Actualiza Rails a la última versión (Rails 7+ tiene mecanismos de serialización más estrictos).
Usa serialización JSON en lugar de la serialización Marshal para evitar la carga arbitraria de objetos.
Audita la deserialización de la aplicación para garantizar que la entrada de usuario no confiable no sea deserializada.
📜 Descargo de responsabilidad legal
Este proyecto está destinado únicamente a fines educativos. El autor no es responsable de ningún uso indebido o daño causado por este código.