Exécution de code à distance via upload d’un web shell polyglotte

Remote code execution via polyglot web shell upload

Contexte du lab

  • Fonction d’upload d’avatar vulnérable.

  • L’application vérifie le contenu du fichier pour s’assurer qu’il s’agit d’une vraie image, mais on peut tout de même faire exécuter du code côté serveur.

  • Objectif : déposer un web shell PHP, l’exécuter, puis lire /home/carlos/secret et soumettre la valeur.

  • Identifiants fournis : wiener:peter.

Tentative initiale (bloquée)

Payload PHP

Résultat :

  • Refusé par le serveur : “file is not a valid image”.

Conclusion : le filtre ne se contente pas de l’extension, il inspecte aussi le contenu / la signature.

triangle-exclamation

Bypass 1 : polyglotte avec “magic number” GIF

Idée : ajouter un en-tête qui ressemble à une image pour passer la vérification.

Payload (en-tête GIF + PHP) :

  • Le début GIF8; sert à faire croire à un fichier GIF (signature/magic number).

Upload accepté.

Exécution :

  • Le fichier est accessible sous :

Objectif final : lire le secret

  • Lire ensuite :

    • /files/avatars/cmd.php?cmd=cat /home/carlos/secret

Bypass 2 : injection via métadonnées (EXIF)

Autre approche : mettre le PHP dans un champ de métadonnées d’une image.

Commande utilisée :

Le commentaire EXIF contient le code PHP.

Le serveur accepte également ce fichier.

Mis à jour