IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Faille connue avec htpasswd?


Sujet :

Sécurité

  1. #1
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Faille connue avec htpasswd?
    bonjour,

    j'ai généré un fichier 'users' à l'aide de htpasswd sur une distribution ubuntu:

    # htpasswd -c users username

    pour le mot de passe de mon utilisateur 'username', c'est quelque chose comme:

    # azertyu1234

    le problème est que j'arrive à me connecter avec l'utilisateur en question en tapant des mots de passe erronés, comme par exemple:

    # azertyu1
    # azertyu1111
    # azertyu1234567...

    en revanche, avec les suivants, je me fais jeter:

    # azertyu2
    # azertyu2234

    est-ce une faille connue de ce brave htpasswd? des idées? je n'ai rien trouvé à ce sujet en googlant..

    merci pour votre aide!

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    ben le hashage n'est pas forcemment injectif...

  3. #3
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    quelque soit l'OS si ta configuration sécurité par défaut est un password de X caractères tout mot de passe de X caractères justes + autre chose passera tjrs puisque seul le nombre maximal de caractère con-tenable est testé.

  4. #4
    Membre éprouvé
    Avatar de _solo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    889
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 889
    Points : 1 228
    Points
    1 228
    Par défaut
    Citation Envoyé par gloumouth
    pour le mot de passe de mon utilisateur 'username', c'est quelque chose comme:

    # azertyu1234

    le problème est que j'arrive à me connecter avec l'utilisateur en question en tapant des mots de passe erronés, comme par exemple:

    # azertyu1
    # azertyu1111
    # azertyu1234567...

    en revanche, avec les suivants, je me fais jeter:

    # azertyu2
    # azertyu2234
    Abandonne ton outils et apprend a faire des htaccess avec tes dix doigts et un editeur de textes

    ps j'ai mis en rouge et en vert pour que ce soit plus visible.

  5. #5
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par gorgonite
    ben le hashage n'est pas forcemment injectif...
    mais encore? si tu pouvais développer un poil gorgonite stp, j'apprecierais beaucoup!

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par gloumouth
    mais encore? si tu pouvais développer un poil gorgonite stp, j'apprecierais beaucoup!


    en gros, il est possible que plusieurs chaines de caractères est le même hash... donc en les comparant, on ne pourra pas faire la différence (la probabilité que ça arrive dépend de la graine servant à initialiser le hash)

    mais vu les exemples que tu as donné, il est probable que frp31 ait donné la bonne réponse... en effet, on fait désormais des lectures bornées en taille, pour éviter les overflows

  7. #7
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par gorgonite
    en gros, il est possible que plusieurs chaines de caractères aient le même hash... donc en les comparant, on ne pourra pas faire la différence (la probabilité que ça arrive dépend de la graine servant à initialiser le hash) mais vu les exemples que tu as donné, il est probable que frp31 ait donné la bonne réponse... en effet, on fait désormais des lectures bornées en taille, pour éviter les overflows
    Merci pour ces infos.

    Est-il alors possible de modifier la valeur/taille de cette graine afin de réduire la probabilité et sans dépasser la limite critique qui permettrait l'overflow?

  8. #8
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par gloumouth
    Est-il alors possible de modifier la valeur/taille de cette graine afin de réduire la probabilité

    ben tout dépend du système de hashage...
    pour ceux utilisés par htpasswd, ça m'étonnerait. prends un hashage plus complexe

    et sans dépasser la limite critique qui permettrait l'overflow?
    les overflow, c'est pour les lectures lors de l'exécution... c'est un autre problème

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    "overflow"... on aura tout vu...

    Personne n'a pensé à lancer htpasswd sans paramètre histoire de voir quelles étaient les options existantes et les valeurs par défaut ?

    Essayez...

    Alors ? Quel type de "hash" est produit par défaut ?
    <insérez votre réponse ici>
    Ca s'rait pas basé sur du DES par hasard ?
    Et ça fonctionne comment ?
    Le mot de passe est utilisé comme clé pour chiffrer une valeur connue (et pas l'inverse !).
    Quelle est la longueur d'une clé DES ?
    ...
    56 bits.
    Soit : 8 caractères de 7 bits.

    Voilà pour la limite.

    Si vous avez des doutes sur ce qui précède, faites un :Comment avoir des mots de passe plus longs ?
    Vous devriez trouver avec quelque-chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htpasswd 2>&1 | grep encryption | grep -v '(default)'

  10. #10
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par David.Schris
    "overflow"... on aura tout vu...
    et pourquoi ?

    tu ne saurais pas pourquoi on est passé de gets à fgets ???


    Citation Envoyé par David.Schris
    Personne n'a pensé à lancer htpasswd sans paramètre histoire de voir quelles étaient les options existantes et les valeurs par défaut ?
    le man htpasswd aurait répondu...

    Citation Envoyé par David.Schris
    Alors ? Quel type de "hash" est produit par défaut ?
    <insérez votre réponse ici>
    Ca s'rait pas basé sur du DES par hasard ?
    Et ça fonctionne comment ?
    Le mot de passe est utilisé comme clé pour chiffrer une valeur connue (et pas l'inverse !).
    Quelle est la longueur d'une clé DES ?
    ...
    56 bits.
    Soit : 8 caractères de 7 bits.

    faux... le système de hashage par défaut dépend de l'OS sur lequel on génére son htpasswd (md5 ou crypt)


    Citation Envoyé par David.Schris
    Comment avoir des mots de passe plus longs ?
    Vous devriez trouver avec quelque-chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    htpasswd 2>&1 | grep encryption | grep -v '(default)'
    ou changer de hashage...


    Citation Envoyé par man htpasswd
    -m Use MD5 encryption for passwords. On Windows, Netware and TPF, this is the default.

    -d Use crypt() encryption for passwords. The default on all platforms but Windows, Netware and TPF. Though possibly supported by htpasswd on all platforms, it is not supported by the httpd server on Windows, Netware and TPF.

    -s Use SHA encryption for passwords. Facilitates migration from/to Netscape servers using the LDAP Directory Interchange Format (ldif).

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par gorgonite
    et pourquoi ?

    tu ne saurais pas pourquoi on est passé de gets à fgets ???
    Pourquoi ? Parce qu'il n'y a pas de rapport entre la limite imposée (sur la longueur de la clé) par un algorithme de chiffrement et un quelconque "overflow".
    Tu peux utiliser fgets() autant que tu veux, DES sera toujours DES.

    Citation Envoyé par gorgonite
    le man htpasswd aurait répondu...
    Si tu veux jouer à ça, très bien : "htpasswd" est plus court à taper que "man htpasswd" (et cela fonctionne même quand tu n'as pas de pages "man")...

    Citation Envoyé par gorgonite
    faux... le système de hashage par défaut dépend de l'OS sur lequel on génére son htpasswd (md5 ou crypt)
    Dans quel forum se trouvent la question et ma réponse ?
    Dans " Forum des développeurs > Général informatique > Linux & Développement pour Linux > Sécurité ".
    Quel OS a été utilisé par le PO ?
    Citation Envoyé par gloumouth
    j'ai généré un fichier 'users' à l'aide de htpasswd sur une distribution ubuntu
    Quel "système de hashage" est utilisé par défaut sous Linux ?
    Vérifions avec le code source de htpasswd :
    Citation Envoyé par [url]http://svn.apache.org/viewvc/httpd/httpd/trunk/support/htpasswd.c?revision=420983&view=markup[/url]
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        apr_file_printf(errfile, " -m  Force MD5 encryption of the password"
    #if defined(WIN32) || defined(TPF) || defined(NETWARE)
            " (default)"
    #endif
            "." NL);
        apr_file_printf(errfile, " -d  Force CRYPT encryption of the password"
    #if (!(defined(WIN32) || defined(TPF) || defined(NETWARE)))
                " (default)"
    #endif
                "." NL);
        apr_file_printf(errfile, " -p  Do not encrypt the password (plaintext)." NL);
        apr_file_printf(errfile, " -s  Force SHA encryption of the password." NL);

  12. #12
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par David.Schris
    Pourquoi ? Parce qu'il n'y a pas de rapport entre la limite imposée (sur la longueur de la clé) par un algorithme de chiffrement et un quelconque "overflow".
    Tu peux utiliser fgets() autant que tu veux, DES sera toujours DES.
    on n'a pas du se comprendre... je parlais de la façon dont elle utilisée fgets dans la lecture du mot de passe saisi par l'utilisateur
    par exemple, dans la fenêtre de son navigateur) ; et donc le fait que les mots de passe plus longs, ayant pour préfixe le mot de passe correct de longueur maximal, passent aussi

    Citation Envoyé par David.Schris
    Quel OS a été utilisé par le PO ?
    Quel "système de hashage" est utilisé par défaut sous Linux ?
    Vérifions avec le code source de htpasswd :
    une question sur htpasswd est assez classique... et il est bon que les utilisateurs, même s'ils passent 90% de leur temps sous Linux, sachent qu'en passant sous d'autre système, ils pourraient avoir un autre hashage
    (d'expérience, c'est le genre de truc auquel on ne pense pas ; et qui prennent un temps fou à "débugger", car totalement illogique)

  13. #13
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par gorgonite
    on n'a pas du se comprendre... je parlais de la façon dont elle utilisée fgets dans la lecture du mot de passe saisi par l'utilisateur
    par exemple, dans la fenêtre de son navigateur) ; et donc le fait que les mots de passe plus longs, ayant pour préfixe le mot de passe correct de longueur maximal, passent aussi
    La bonne blague...
    Tu me trouves le code source d'un navigateur qui lit le mot de passe saisi par l'utilisateur dans une fenêtre en utilisant fgets() et j'accepterai de croire que tu es sérieux et non que tu essayes de t'en sortir par une pirouette. Marché conclu ?

    Citation Envoyé par gorgonite
    une question sur htpasswd est assez classique... et il est bon que les utilisateurs, même s'ils passent 90% de leur temps sous Linux, sachent qu'en passant sous d'autre système, ils pourraient avoir un autre hashage
    Je n'ai pas dit le contraire. J'ai seulement souligné le fait que nous étions, ici, dans un forum dédié à linux, que la question portait sur l'utilisation d'un programme compilé pour linux et utilisé sous linux. Ceci pour dire que ma réponse s'adressait à une personne ayant rencontré un problème avec un programme compilé pour linux, utilisé sous linux et ayant posé une question dans un forum dédié à linux... Et sous linux, puisqu'on en parle, le "système de hashage" par défaut avec le programme dont il est question est "CRYPT", c.à.d. : utilisation de la fonction "crypt()" qui, sous linux, utilise DES par défaut (je maintiens).

    Citation Envoyé par gorgonite
    (d'expérience, c'est le genre de truc auquel on ne pense pas ; et qui prennent un temps fou à "débugger", car totalement illogique)
    1) On y pense quand on lit l'aide avant d'utiliser le programme.
    2) Ce n'est pas illogique (ex. : dans quelle DLL de Windows trouve-t-on une fonction "crypt()" compatible avec celle de linux ?).

  14. #14
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par David.Schris
    La bonne blague...
    Tu me trouves le code source d'un navigateur qui lit le mot de passe saisi par l'utilisateur dans une fenêtre en utilisant fgets() et j'accepterai de croire que tu es sérieux et non que tu essayes de t'en sortir par une pirouette. Marché conclu ?

    tu es vraiment irrécupérable... je vais jeter l'éponge
    je donnais un exemple qui montre pourquoi ça marche quand même !!!

    Citation Envoyé par David.Schris
    1) On y pense quand on lit l'aide avant d'utiliser le programme.
    2) Ce n'est pas illogique (ex. : dans quelle DLL de Windows trouve-t-on une fonction "crypt()" compatible avec celle de linux ?).
    parce qu'il n'y a pas de DES sous windows ???
    première nouvelle...

  15. #15
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Citation Envoyé par gorgonite
    tu es vraiment irrécupérable... je vais jeter l'éponge
    On se calme les enfants, nous sommes pas sur un terrain de batailles. Si vous voulez jouer, vous allez voir dehors si j'y suis.

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec htpasswd
    Par gotcha5832 dans le forum Sécurité
    Réponses: 1
    Dernier message: 22/09/2008, 19h26
  2. [Htaccess] Problème avec htpasswd
    Par Rodrick dans le forum Apache
    Réponses: 2
    Dernier message: 20/06/2007, 18h44
  3. Réponses: 2
    Dernier message: 04/05/2007, 15h29
  4. [Htaccess] Problème avec .htpasswd
    Par dombili dans le forum Apache
    Réponses: 8
    Dernier message: 25/02/2007, 17h30
  5. pb avec htpasswd
    Par azorol dans le forum Apache
    Réponses: 2
    Dernier message: 10/10/2005, 20h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo