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

Remote code execution via web shell upload

Objectif du laboratoire

Ce laboratoire présente une fonctionnalité de téléversement d’images vulnérable. Aucune vérification n’est effectuée sur les fichiers envoyés par les utilisateurs avant leur stockage sur le système de fichiers du serveur. L’objectif est de téléverser un web shell PHP simple afin d’exécuter des commandes sur le serveur et de récupérer le contenu du fichier /home/carlos/secret.

Contexte et point d’entrée

Après authentification avec les identifiants fournis (wiener:peter), l’application met à disposition une fonctionnalité permettant de définir une image de profil (avatar). Le fichier envoyé est directement stocké côté serveur, sans contrôle sur le type ou le contenu réel du fichier.

Les fichiers téléversés sont accessibles via le chemin suivant :

Exploitation de la vulnérabilité

Au lieu d’une image, il est possible de téléverser un fichier PHP contenant un code malveillant minimal, par exemple un web shell permettant l’exécution de commandes système via un paramètre GET.

Exemple de fichier téléversé (cmd.php)

Une fois le fichier enregistré sur le serveur, il devient accessible publiquement depuis le répertoire des avatars.

Exécution de commandes à distance

L’accès direct au fichier permet désormais d’exécuter des commandes système. Par exemple, pour vérifier l’utilisateur courant :

Exfiltration du secret

En utilisant le même mécanisme, il est possible de lire le fichier cible demandé par le laboratoire :

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

Le contenu retourné correspond au secret à soumettre via le bouton prévu dans l’interface du laboratoire.

Mis à jour