MySQL et son fork MariaDB (port 3306) offrent deux primitives offensives principales une fois authentifié : lecture et écriture de fichiers via LOAD_FILE et INTO OUTFILE (conditionnées par le privilège FILE et secure_file_priv), et exécution de commandes du système d'exploitation via une fonction définie par l'utilisateur. L'écriture de fichier seule suffit souvent, en déposant un webshell sous un répertoire servi.
Ce qu'il faut viser#
- Exécution de commandes : une fonction définie par l'utilisateur (
lib_mysqludf_sys) qui exécute des commandes OS sous le compte de service. - Accès aux fichiers :
INTO OUTFILEpour écrire un webshell,LOAD_FILEpour lire des fichiers de l'hôte.
Obtenir une session#
# default/weak credentials, commonly root with no or a weak password
mysql -h <target> -u root -p
hydra -L users.txt -P passwords.txt <target> mysql