Web shell via contournement d’une blacklist d’extensions

Web shell upload via extension blacklist bypass

Objectif du lab

Le formulaire d’upload d’avatar bloque certaines extensions (ex : .php) via une liste noire, mais la configuration est contournable. But : uploader un web shell PHP, l’exécuter, puis lire /home/carlos/secret.

Constat initial

On tente d’uploader un fichier PHP classique

intetanmosponer el archivo siguiente

Avec un nom cmd.php, le serveur répond :

triangle-exclamation

Idée de contournement

La faille vient du fait que le serveur autorise l’upload de .htaccess (ou ne le filtre pas correctement). Du coup, on peut redéfinir une extension “inoffensive” (ex : .jordan) et demander à Apache de la traiter comme du PHP.

Étape 1 — Uploader un .htaccess qui active PHP sur une extension custom

On upload un fichier nommé :

  • filename=".htaccess"

Contenu du fichier :

Le serveur accepte le .htaccess.

Étape 2 — Uploader le web shell avec l’extension autorisée

On renomme le web shell :

Étape 3 — Exécuter des commandes via le web shell

Le fichier est accessible (exemple dans /files/avatars/) :

  • Tester l’exécution

Étape 4 — Exfiltrer le secret

Lire le fichier demandé :

Puis soumettre la valeur récupérée dans la bannière du lab.

Mis à jour