Rails ActiveSupport Exploit (cve-2019-5420) POC (considere isto para encadear CVE-2019-5418!)
Combina perfeitamente com CVE-2019-5418!
Captura de tela do POC
🚨 Aviso
Este repositório contém um exploit de prova de conceito (PoC) demonstrando execução remota de código (RCE) em aplicações Ruby on Rails através do abuso do ActiveSupport::MessageVerifier. Use com responsabilidade!
📌 Visão Geral
Este script explora vulnerabilidades de desserialização do ActiveSupport ao utilizar um objeto ERB criado encapsulado em DeprecatedInstanceVariableProxy. Quando a carga útil assinada é desserializada por uma aplicação Rails vulnerável, ocorre a execução arbitrária de código Ruby.
⚠️ Aviso Legal
Este projeto é apenas para fins educacionais e de pesquisa. O uso não autorizado contra sistemas que você não possui é ilegal e pode resultar em graves consequências legais.
🛠️ Como Funciona
1️⃣ Gerar uma Chave Secreta
O script deriva um `` a partir de um nome de aplicação Rails conhecido usando hash MD5.
2️⃣ Criar um Segredo do ActiveStorage
Usa ActiveSupport::KeyGenerator para gerar uma chave de assinatura.
3️⃣ Criar um Objeto ERB Malicioso
Constrói um objeto `` não inicializado com código controlado pelo atacante.
4️⃣ Encapsular em DeprecatedInstanceVariableProxy
Esconde o objeto malicioso dentro de um invólucro de aparência inofensiva.
5️⃣ Assinar e Gerar um Token de Exploit
Usa ActiveSupport::MessageVerifier para assinar a carga útil, fazendo-a parecer legítima.
6️⃣ Alcançar Execução Remota de Código (RCE)
Quando desserializada, o Rails executa a carga útil do atacante, permitindo execução arbitrária de comandos.
🚀 Uso
root@kitploit:~
ruby POC.rb
O script gerará um token de exploit assinado, que pode ser usado contra uma aplicação Rails vulnerável.
🛡️ Mitigações
**Rotacione e proteja **`` para impedir que atacantes gerem cargas úteis assinadas.
Atualize o Rails para a versão mais recente (Rails 7+ possui mecanismos de serialização mais rigorosos).
Use serialização JSON em vez de serialização Marshal para evitar carregamento arbitrário de objetos.
Audite a desserialização da aplicação para garantir que entradas de usuário não confiáveis não estejam sendo desserializadas.
📜 Aviso Legal
Este projeto destina-se apenas a fins educacionais. O autor não é responsável por qualquer uso indevido ou danos causados por este código.