web-dev-qa-db-fra.com

Où sont stockés les mots de passe?

Comment déterminez-vous où sont stockés les mots de passe des utilisateurs, pour les utilisateurs pouvant se connecter? Je sais que le système utilise LDAP pour les utilisateurs (nom d'utilisateur, chemin de base, etc.), mais il ne contient aucun type de mot de passe. J'ai accès à une machine configurée, comment puis-je savoir où sont les mots de passe? (quel fichier de configuration?)

4
redman

Les mots de passe ne sont pas stockés. Ils sont transformés par une fonction et la valeur ainsi produite, appelée hash, est stockée.

Si vous vous connectez, la même fonction est exécutée sur votre entrée et la valeur générée est comparée à celle de la valeur stockée dans le fichier /etc/shadow.

La fonction est d'un genre, ce qui est difficile à inverser. Donc, avec la valeur dans/etc/shadow, vous ne pouvez pas calculer le mot de passe d'origine, et la clé qui y est insérée n'est pas utile pour vous connecter - vous avez besoin du mot de passe.

Avec la force brutale, vous pouvez essayer de générer un tel mot de passe, et pour des noms communs tels que 123456, password, asdf, secret, 1111 et ainsi de suite, les valeurs fantômes sont déjà bien connues et stockées dans ce que l’on appelle Rainbow-tables.

Pour empêcher les attaques avec Rainbow-tables, la fonction password peut utiliser un salt qui influence le résultat, ce qui signifie que chaque mot de passe utilise un sel différent, stocké dans les deux premiers octets de la chaîne de hachage du mot de passe (grâce à psusi, qui m'a corrigé), de sorte que vous auriez besoin d'une table Rainbow différente pour chaque mot de passe, ce qui n'est pas très pratique - cela prend trop de temps pour les générer, et cela coûte cher.

Je ne suis pas sûr si Ubuntu utilise un sel. Nous pouvons attendre que quelqu'un nous l'explique, ou vous pouvez générer le même utilisateur avec le même mot de passe sur deux ordinateurs et comparer la valeur dans/etc/shadow.

4
user unknown

Les mots de passe (ou de meilleures hachages) sont probablement stockés sur le serveur LDAP. "Le plus probablement" signifie que vous pourriez avoir une configuration très étrange où ils ne le sont pas. La configuration LDAP est très flexible, mais cela signifie également que, sans inspecter les fichiers de configuration, il est impossible de donner une réponse claire sur la façon dont cela est fait dans votre situation. Vous avez probablement déjà examiné /etc/ldap.conf sur le client pour obtenir des détails sur la configuration?

Une configuration possible pour l’authentification LDAP est la suivante: la boîte client récupère le nom d’utilisateur et le mot de passe de la connexion et effectue une liaison au serveur LDAP avec ces informations. . Le serveur LDAP vérifie le nom d'utilisateur et le mot de passe et renvoie le succès ou l'échec. Dans cette configuration, la boîte client ne voit jamais le hachage de mot de passe stocké du serveur LDAP.

Connaissez-vous le type de serveur LDAP utilisé? La possibilité de voir les mots de passe utilisateur hachés dépend de la configuration du serveur LDAP. Voir à titre d'exemple http://www.faqs.org/docs/securing/chap26sec213.html sur ce que vous pouvez configurer sur un serveur OpenLDAP.

La réponse concernant le hachage du mot de passe de "user-unknown" est correcte, c'est seulement que les hachages ne sont pas stockés dans /etc/shadow mais dans le serveur LDAP. Le hachage lui-même peut également être effectué par le serveur LDAP et non par le client.

3
HelmuthB

As-tu essayé
- phpldapadmin?
- ldapsearch -LLL -x -b "dc = votre, dc = domaine" uid = * (ou remplacez * par nom d'utilisateur, c'est peut-être cn au lieu de uid)
Si les mots de passe sont stockés dans ldap, vous devriez les voir avec cette méthode.

Si l'ordinateur est un contrôleur de domaine, smbldap-tools est peut-être installé. Vous pouvez donc simplement réinitialiser les mots de passe avec le nom d'utilisateur smbldap-passwd.

Vous pouvez également consulter votre config pam.d (/etc/pam.d/common-*) pour connaître le mécanisme de connexion utilisé par votre ordinateur.

0
sBlatt