Bypass avec octet nul et validation d’extension

File path traversal, validation of file extension with null byte bypass

Ce laboratoire présente une vulnérabilité de path traversal lors de l'affichage des images produits. L’application vérifie que le nom de fichier fourni se termine bien par l’extension attendue.

L’objectif est de lire le contenu du fichier /etc/passwd.

Analyse

Si l’on fournit directement le chemin

l’application retourne une erreur, car elle exige que le fichier possède l’extension .jpg.

Dans les anciennes versions de PHP (avant 5.3.4), il était possible d’exploiter un octet nul (%00) pour contourner cette validation : le moteur PHP arrêtait la lecture du nom de fichier au niveau du null byte, tandis que l’application continuait d’y voir une extension valide.

Payload

On ajoute donc un null byte avant l’extension :

Le navigateur interprète toujours « .jpg », mais PHP s’arrête à « /etc/passwd », ce qui permet de lire le fichier sensible.

Mis à jour

Ce contenu vous a-t-il été utile ?