X-Space

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - CentOS

Fil des billets

mardi, août 5 2008

Comment récupérer un mot de passe root sans être root ?

Récemment j'ai perdu le mot de passe root d'un serveur que j'administre (ok je suis un boulet).

Alors comment restaurer un mot de passe root quand on a perdu ce mot de passe ?

Première solution : linux single

Ce mode permet de démarrer le système en root, ne reste qu'à modifier le mot de passe puis à rebooter et c'est bon.
Sauf que ça implique une intervention manuelle sur le serveur et :

  • le datacenter est à plus de 350 km de chez moi ;
  • je n'avais pas envie de téléphoner aux responsables du DC pour ce genre de bêtises.

Deuxième piste : vmsplice local root exploit

Cette faille permettait à n'importe quel utilisateur d'exécuter des commandes root.
Cette faille a été corrigée dans la version 2.6.24. Manque de bol j'avais déjà mis à jour le serveur lors de la publication de la faille.
L'exploit n'a donc rien donné.

Troisième piste :

Heu la j'ai un peu séché pendant 1 ou 2 heures, en réfléchissant autour de la question : comment exécuter un script root sans être root ?
Impossible théoriquement.

Jusqu'à ce que pense à regarder les crons, un des scripts du site effectue une sauvegarde quotidienne de la base de données.
Ce script s'exécute en cron mais peut aussi être exécuter à la main dans le site via un exec.Apache en est le possesseur. Ne reste plus qu'a le modifier sauf que je ne suis pas Apache et que je n'ai aucun droit sur ce fichier même pas en lecture.
Et si je me faisais passer pour Apache ?
La version beta du site étant accessible pour moi, j'ai créé une page php afin qu'elle modifie le script de backup :

#!/bin/sh
echo root:<motdepasse> | chpasswd

J'exécute le script dans mon navigateur, comme c'est apache qui exécute la page donc j'ai le droit d'édition sur le script de backup. Ne restait plus qu'a attendre que le cron passe. Et hop le tour est joué.

Joli faille de sécurité ?

Plus ou moins:

  • Je possède le seul compte utilisateur accessible via SSH
  • fail2ban fait le ménage sur les attaques des robots.

Mais j'ai un script qui s'exécute en root qui est modifiable par un utilisateur quelconque ce qui relève donc d'une faille possible. J'ai donc retiré tout droit d'écriture sur le fichier.