
CVE-2026-66066 (KindaRails2Shell) PoC - Leitura arbitrária de arquivos para RCE no Rails Active Storage/libvips; para testes de segurança autorizados
Ruby on Rails Active Storage + libvips ferramenta PoC de leitura arbitrária de arquivos → execução remota de código (RCE) condicional.
Arquivo único, Python 3.11+, apenas biblioteca padrão, zero dependências, com payload híbrido MAT/HDF5 integrado, decodificador de pixels PNG em Python puro, leitura com offset, recuperação de chaves, RCE e modo de varredura.
O Rails confia no content_type informado pelo cliente (endpoint de upload direto), enquanto o libvips fareja os magic bytes do arquivo — o mesmo arquivo é tratado como dois formatos diferentes nas duas camadas. O atacante constrói um arquivo híbrido em que "os primeiros 10 bytes textuais declaram MATLAB 5.0 e os bytes 124-125 declaram MAT 7.3 (HDF5)" e, por meio do mecanismo HDF5 External File List, lê arquivos arbitrários do servidor (padrão /proc/self/environ), recupera o SECRET_KEY_BASE e forja uma variation assinada, alcançando execução condicional de comandos.
< 7.2.3.2 / / >= 8.0, < 8.0.5.1>= 8.1, < 8.1.3.1python3 kr2s.py <command> [options]
| Comando | Descrição |
|---|---|
check | Envia um blob para confirmar que o arquivo de destino é legível (invasivo) |
read <path> | Recupera o prefixo de tamanho fixo do arquivo especificado (saída binária) |
secrets | Recupera as variáveis de ambiente do processo e os arquivos de credenciais do Rails (mascarado por padrão; --show-full exibe os valores completos) |
rce | Recupera o secret_key_base e executa comandos condicionalmente (--skb pode pular a leitura do ambiente) |
probe | Detecta os carregadores não confiáveis do libvips disponíveis no alvo |
scan | Varredura passiva/ativa multithread (--active envia um blob malicioso para leitura canary) |
Parâmetros gerais: URL de destino / hostname / arquivos em lote, --entry, --proxy, caminhos personalizados, opções de TLS, timeout, User-Agent etc.; veja python3 kr2s.py --help.
cd lab
RAILS_VERSION=8.1.3 docker compose up --build
Uso exclusivo para pesquisa de segurança, validação de vulnerabilidades e testes defensivos. Os comandos read / check / scan --active / rce enviam blobs persistentes para o alvo e executam comandos nele. Execute em um lab Docker descartável e não use contra alvos não autorizados.