Méthodologie d’un test intrusion d’un serveur web en pratique. Partie 4 – La phase de post-exploitation : 8.4.1 Récupérer des informations

Petit rappel : si vous désirez faire réaliser un audit, vous trouverez toutes les informations sur mon site : https://resistez-aux-hackeurs.com

La phase appelée « Post Exploitation » commence après avoir obtenu l’accès administrateur (root) au système (même si certaines actions peuvent être réalisées dès un premier accès obtenu). Elle consiste pour l’essentiel à récupérer de nouvelles informations, à installer un accès sur le système (backdoor) et à effacer ses traces.

Dans cette phase, l’attaquant va chercher à récupérer les informations liées aux utilisateurs dont les mots de passe afin de pouvoir les ré-exploiter sur d’autres systèmes.

1.    Récupérer les mots de passe

Parmi les informations les plus intéressantes à récupérer pour un attaquant sont les mots de passe des comptes utilisateur de la machine. Comme nous savons qu’il y a aussi un serveur web hébergeant Joomla, nous allons voir comment récupérer les mots de passe des utilisateurs Joomla.

1.1    Décrypter les mots de passe des utilisateurs Linux

Première chose à faire, récupérer le fichier de mots de passe du système et le déchiffrer afin d’obtenir les informations de l’ensemble des comptes présents sur la machine. Le fichier des comptes sous Linux est le fichier /etc/passwd.

Ce fichier contient uniquement les comptes ainsi que les droits associés. Il ne contient pas les mots de passe des utilisateurs. Les mots de passe eux se trouvent dans le fichier /etc/shadow

Pour cracker (découvrir) les mots de passe, nous pouvons utiliser l’outil « John the ripper [1]». C’est un logiciel libre de cassage de mot de passe, utilisé notamment pour tester la sécurité d’un mot de passe.

Pour pouvoir cracker ce mot de passe, il faut « re-assembler » les 2 fichiers pour n’en former plus qu’un seul. C’est ce que la commande <unshadow> va nous permettre de faire.

Une fois les 2 fichiers assemblés, on utilise John pour trouver les mots de passe associés à chaque compte.

Selon la complexité des mots de passe, le temps pour les trouver peut être plus ou moins long (voir si le mot de passe est très complexe, impossible à trouver en un temps raisonnable).

1.2    Décrypter les mots de passe des utilisateurs Joomla

Les informations de connexion des utilisateurs Joomla sont stockées dans une base de données mysql. Pour accéder à ces informations, on peut passer par phpmyadmin[2], qui est une application Web de gestion pour les bases de données MySQL.

Pour découvrir le mot de passe de phpmyadmin, il est possible d’utiliser le script <phpmyadmin_bruteforce.py> qui teste une liste de mots de passe passée en paramètre (fichier dictionnaire).

Note : Le script phpmyadmin_bruteforce.py ne fonctionne plus sur la version installée de phpmyadmin. Ceci est dû au fait que désormais un jeton est généré aléatoirement à chaque tentative d’authentification et que ce jeton est nécessaire pour réaliser une authentification. Or le script ne le permet pas. Un autre moyen de récupérer le mot de passe de phpmyadmin est de consulter le fichier /etc/phpmyadmin/db-config.php où le mot de passe est stocké en clair…

Une fois connecté à phpmyadmin (compte root, mot de passe mysql), on sélectionne la base de données Joomla.

La liste des comptes utilisateurs est dans la table <jos_users>

Cette table contient l’ensemble des informations des utilisateurs : nom, courriel, type de compte. Le mot de passe est stocké en md5[3]. Le md5 est une fonction de hashage mathématique permettant de calculer l’empreinte numérique d’un fichier ou d’une chaîne de caractère.

On enregistre ces informations dans un fichier texte.

Le mot de passe est aussi composé d’un salt qui est une clé de cryptage générée aléatoirement. Cela permet de complexifier le mot de passe. Chaque login est donc stocké sous la forme :

compte : <password> :<salt>

Lorsqu’un utilisateur s’authentifie, le mot de passe qu’il a saisi est concaténé avec $salt, puis crypté en md5 et enfin comparé à md5($password.$salt). Vient maintenant le moment du cassage des mots de passe. Pour cela, nous utilisons le script <joomla-cracker[4]>. Idem que pour phpmyadmin, c’est un script qui teste différents mots de passe

A partir d’une liste de mots, le script calcule son empreinte md5 puis la compare avec une liste de hash (les hash que nous avons récupéré de Joomla). Si les 2 valeurs correspondent, c’est qu’on a découvert le bon mot de passe. Le fichier <Password.txt> contient une liste de mots, le fichier <hash.txt > contient la liste des utilisateurs de Joomla.

Grâce à ce script, on a pu découvrir les mots de passe de certains utilisateurs sous Joomla. L’important dans ce type de script est le nombre de mots de passe testés. Avec un bon dictionnaire, on peut trouver en général 3 mots de passe sur 4.

Il est aussi possible d’utiliser l’outil john (vu précédemment) pour casser les mots de passe joomla

Pour le cms Drupal, lune méthodologie similaire est à appliquer.


[1] http://www.openwall.com/john/

[2] http://www.phpmyadmin.net/home_page/index.php

[3] http://fr.wikipedia.org/wiki/MD5

[4] http://web-vuln.blogspot.com/2010/01/cracking-password-joomla-hash-md5salt.html

Vues : 15