Web shell via path traversal

Web shell upload via path traversal

Contexte du labo

  • Fonction d’upload d’image pour l’avatar.

  • Le serveur stocke bien le fichier, mais empêche l’exécution des fichiers fournis par l’utilisateur (ex. PHP) dans le répertoire des avatars.

  • Une vulnérabilité secondaire permet de contourner cette restriction.

Objectif

  • Déposer un web shell PHP exécutable, puis l’utiliser pour lire /home/carlos/secret.

Web shell utilisé

Fichier cmd.php :

Constats

  • L’upload de cmd.php est accepté.

  • Mais le fichier n’est pas interprété en PHP lorsqu’il est placé dans le dossier des avatars (probablement une règle qui empêche l’exécution dans ce répertoire).

Bypass via path traversal dans filename

Idée : sortir du répertoire avatars/ au moment de l’upload en manipulant le nom de fichier.

  • Exemple de valeur :

Résultat observé :

  • Message côté appli : The file avatars/../cmd.php has been uploaded

  • Ce qui indique que le serveur a accepté un chemin contenant ../.

Exécution depuis un répertoire interprété par PHP

  • En visant le dossier files/, le serveur interprète le fichier PHP.

  • Accès au shell :

    • /files/cmd.php?cmd=id (test d’exécution)

Exfiltration du secret

Commande finale :

Mis à jour