
CVE-2026-66066 (KindaRails2Shell) PoC - Lecture arbitraire de fichiers dans Rails Active Storage/libvips menant à une exécution de code à distance (RCE) ; pour les tests de sécurité autorisés
Outil PoC : lecture arbitraire de fichiers sur Ruby on Rails Active Storage + libvips → exécution de code à distance (RCE) conditionnelle.
Fichier unique, Python 3.11+, bibliothèque standard pure, zéro dépendance, avec charge utile hybride MAT/HDF5 intégrée, décodeur de pixels PNG en Python pur, lecture à offset, récupération de clés, RCE et modes de scan.
Rails se fie au content_type annoncé par le client (endpoint de téléversement direct), tandis que libvips renifle les magic bytes du fichier — le même fichier est interprété comme deux formats différents par les deux couches. L'attaquant construit un fichier hybride « les 10 premiers octets (texte) déclarent MATLAB 5.0, et les octets 124-125 (mot de version) déclarent MAT 7.3 (HDF5) » et, via le mécanisme HDF5 External File List, lit des fichiers arbitraires du serveur (par défaut /proc/self/environ), récupère SECRET_KEY_BASE, forge une variation signée et parvient conditionnellement à l'exécution de commandes.
< 7.2.3.2>= 8.0, < 8.0.5.1>= 8.1, < 8.1.3.1python3 kr2s.py <command> [options]
| Commande | Description |
|---|---|
check | Téléverse un blob pour confirmer que le fichier cible est lisible (intrusif) |
read <path> | Récupère le préfixe de taille fixe du fichier spécifié (sortie binaire) |
secrets | Récupère les variables d'environnement du processus et le fichier de credentials Rails (masqué par défaut, --show-full affiche toutes les valeurs) |
rce | Récupère secret_key_base et exécute conditionnellement des commandes (--skb permet d'ignorer la lecture de l'environnement) |
probe | Détecte les chargeurs non fiables libvips disponibles sur la cible |
scan | Scan multithread passif/actif (--active téléverse un blob malveillant pour une lecture canari) |
Paramètres généraux : URL cible / nom d'hôte / fichier batch, --entry, --proxy, chemins personnalisés, options TLS, délai d'expiration, User-Agent, etc. Voir python3 kr2s.py --help.
cd lab
RAILS_VERSION=8.1.3 docker compose up --build
Réservé à la recherche en sécurité, à la validation de vulnérabilités et aux tests défensifs. Les commandes read / check / scan --active / rce téléversent des blobs persistants sur la cible et exécutent des commandes sur celle-ci. À exécuter uniquement dans un lab Docker jetable, ne pas utiliser sur des cibles non autorisées.