
CVE-2026-66066 (KindaRails2Shell) PoC - Rails Active Storage/libvips arbitrary file read to RCE; for authorized security testing
PoC-Tool für Ruby on Rails Active Storage + libvips: beliebige Dateien lesen → bedingte Remote-Codeausführung (RCE).
Einzeldatei, Python 3.11+, reine Standardbibliothek, null Abhängigkeiten, mit integriertem MAT/HDF5-Hybrid-Payload, reinem Python-PNG-Pixeldecoder, Offset-Lesen, Schlüsselwiederherstellung, RCE- und Scan-Modus.
Rails vertraut dem vom Client gemeldeten content_type (direkter Upload-Endpunkt), während libvips die Magic Bytes der Datei überprüft – dieselbe Datei wird auf zwei Ebenen als zwei verschiedene Formate behandelt. Ein Angreifer erstellt eine Hybriddatei, deren erste 10 Bytes (Text) MATLAB 5.0 vorgeben, während das Versionswort an den Bytes 124-125 MAT 7.3 (HDF5) deklariert. Über den HDF5-External File List-Mechanismus wird eine beliebige Datei des Servers gelesen (standardmäßig /proc/self/environ). Nach der Wiederherstellung von SECRET_KEY_BASE wird eine signierte Variation gefälscht, wodurch bedingt eine Befehlsausführung erreicht wird.
< 7.2.3.2 / >= 8.0, < 8.0.5.1 / >= 8.1, < 8.1.3.1python3 kr2s.py <command> [options]
Allgemeine Parameter: Ziel-URL / Hostname / Batch-Datei, --entry, --proxy, benutzerdefinierte Pfade, TLS-Optionen, Timeout, User-Agent usw. Details finden Sie in python3 kr2s.py --help.
cd lab
RAILS_VERSION=8.1.3 docker compose up --build
Nur für Sicherheitsforschung, Schwachstellenverifikation und defensive Tests. Die Befehle read / check / scan --active / rce laden persistente Blobs auf das Ziel hoch und führen Befehle auf dem Ziel aus. Bitte nur in einem wegwerfbaren Docker-Lab ausführen und nicht gegen nicht autorisierte Ziele verwenden.
| Befehl | Beschreibung |
|---|
check | Lädt ein Blob hoch, um zu bestätigen, dass die Zieldatei lesbar ist (invasiv) |
read <path> | Liest das Präfix fester Größe der angegebenen Datei aus (Binärausgabe) |
secrets | Liest Prozessumgebungsvariablen und Rails-Credentials-Dateien aus (standardmäßig maskiert, --show-full zeigt alle Werte) |
rce | Stellt secret_key_base wieder her und führt bedingt Befehle aus (--skb überspringt das Lesen der Umgebung) |
probe | Ermittelt die auf dem Ziel verfügbaren nicht vertrauenswürdigen libvips-Loader |
scan | Multithread-Scan, passiv/aktiv (--active lädt schädliche Blobs für Canary-Lesezugriffe hoch) |