Cryptage mot de passe Joomla

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Cryptage mot de passe Joomla

    Bonjour,

    je sais que beaucoup de posts en parlent, mais beaucoup sont très vieux ou non résolu. Dans la majorité des posts, le cryptage final est en deux parties séparées par un ":", hors, dans mon joomla 3.7 je n'en ai pas.

    Je me permets donc d'ouvrir un nouveau sujet pour mettre ca au clair et à jour, puisque apparemment c'est le problème de pas mal de monde.

    D'après ce que j'ai pu voir des anciens posts, le cryptage est un mélange de md5() et de $salt

    J'ai commencé mes tests, avec le mot de passe : 1234, ce qui donne en md5() :
    81dc9bdb52d04dc20036dbd8313ed055

    Dans ma base de donnée, ce donne ce genre de mot de cryptage :
    $2y$10$9BODPH85wjtRSWoJ8Esf2u/7vwCs3Hqk1ZRoX2kIBE0VIWPV22lFa

    J'ai essayé bêtement ce que j'ai trouvé comme md5($pass.$salt), qui donne le même résultat que md5() seul, bref rien de concluant.

    Et puisque j'aime bien comprendre ce que je fais, je me suis forcément posé la question, d'ou sort ce $salt, ou est t'il créé ?

    Je ne souhaite pas décrypter ou comparer des mdp, juste faire un cryptage pour créer ou modifier un mot de passe utilisateur, sans utiliser les formulaires joomla ni autre extension, car je veux maîtriser les infos comme mettre le nom en identifiant, ou autres infos supplémentaires que j'ai rajouté à la table __users.

    Merci d'avance.
    Dernière édition par Minie à 16/07/2017, 22h55

  • #2
    Re : Cryptage mot de passe Joomla

    J'ai réussi après des heures d'acharnement j'ai trouvé la fonction hashPassword() créée dans library/joomla/user/helper.php, et utilisée comme suit :

    JUserHelper::hashPassword($password_recupere)

    Mais je ne comprends pas trop comment Joomla peut s'en resservir par la suite à partir d'une création aléatoire.

    Peut t'on décrypté un mot de pass fait d'une chaine aléatoire ?
    Dernière édition par Minie à 15/07/2017, 22h53

    Commentaire


    • #3
      Re : Cryptage mot de passe Joomla

      Bonjour,

      Il s'agit bien de Joomla 3.7 ? Car depuis Joomla 3.3 (en 2014... donc oui c'est vieux), on est désormais sur un encryptage du mot de passe utilisant bcrypt et non plus md5.



      Et pour simplifier avec la fonction crypt en php, cela donne... :

      Code:
      crypt($motdepasse, '$2y$10$'.randombytes(22));


      A titre perso, c'est ce que j'utilise pour remplacer un mot de passe quand je n'arrive pas à acceder à l'administration du site (avec juste avec l'écriture d'un fichier php temporaire à la racine du site), pour inserer une liste d'utilisateurs (notamment pour un dump de 150 utilisateurs provenant d'une liste excel) ou dans le cadre d'un deploiement de package sur un serveur dédié (personnalisation à l'install sans passer par l'installateur de joomla ou akeeba)...

      Exemple : 12346 peut donner parmi de nombreuses variantes...

      Code:
      $2y$10$.prE1BkZ87aPNnsKMTOSxe9pv8TQIhfBb2HZpSnBPfh.LeHgnaLD2
      On reconnait un code bcrypt avec le début '$2y' dans '$2y$10$', le $10 est le coût algorithmique autrement dit 210 = 1 024 itérations. Les 22 caractères suivants sont le salt donc le grain de sel aléatoire. Les caractères restants sont le mot de passe encodé et l'authentification (hash-value)... lire https://www.bcrypt.fr/questions, cela donne plus d'infos.

      On peux s'amuser également à créer et vérifier sur : https://bcrypt-generator.com/

      @minie : oui pour l'utilisation dans joomla de JUserHelper::hashPassword pour Joomla
      Hashing password with Joomla 3. GitHub Gist: instantly share code, notes, and snippets.



      En résumé, le nombre d'itérations implique un calcul plus long et plus fastidieux pour les scripts de hacks et même si la base de données était piraté, cela me semble un peu plus difficile de retrouver le mot de passe... comme ce fut le cas l'année dernière pour dailymotion (ce service de video utilisent bcrypt également) : https://www.information-security.fr/...didentifiants/

      Ce n'est qu'un avis mais bcrypt a donné un peu plus de sécurité à Joomla, cela n’empêche pas d'imposer un minimum de caractères, mélange min/maj, caractères spéciaux aux mots de passe pour fonctionner un peu plus efficacement. Il faut éviter par exemple que les utilisateurs utilisent uniquement leur date d'anniversaire pour le mot de passe ... (chercher "paradoxe des anniversaires" dans un moteur de recherche si vous aimez les probabilités )...

      De plus, il y a aujourd'hui un marché de solutions complémentaires à connaître : double authentification (google authenticator et dérivé), sans mot de passe comme launchkey.com, par sms avec accountkit de facebook...

      Et pour répondre à la question... On ne peut pas décoder un mot de passe car le hachage est à sens unique (indéchiffrable), donc si l'utilisateur a oublié son code, il faudra absolument le remplacer.
      Dernière édition par daneel à 16/07/2017, 00h46
      Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

      Commentaire


      • #4
        Re : Cryptage mot de passe Joomla

        Bonjour,

        merci pour ta réponse très complète En effet mon problème venait du changement récent de cryptage et donc tous les sujets sur le net sont obsolètes. Il y en a maintenant un !

        Commentaire


        • #5
          Re : Cryptage mot de passe Joomla

          Envoyé par daneel Voir le message
          Bonjour,

          Il s'agit bien de Joomla 3.7 ? Car depuis Joomla 3.3 (en 2014... donc oui c'est vieux), on est désormais sur un encryptage du mot de passe utilisant bcrypt et non plus md5.



          Et pour simplifier avec la fonction crypt en php, cela donne... :

          Code:
          crypt($motdepasse, '$2y$10$'.randombytes(22));


          A titre perso, c'est ce que j'utilise pour remplacer un mot de passe quand je n'arrive pas à acceder à l'administration du site (avec juste avec l'écriture d'un fichier php temporaire à la racine du site), pour inserer une liste d'utilisateurs (notamment pour un dump de 150 utilisateurs provenant d'une liste excel) ou dans le cadre d'un deploiement de package sur un serveur dédié (personnalisation à l'install sans passer par l'installateur de joomla ou akeeba)...

          Exemple : 12346 peut donner parmi de nombreuses variantes...

          Code:
          $2y$10$.prE1BkZ87aPNnsKMTOSxe9pv8TQIhfBb2HZpSnBPfh.LeHgnaLD2
          On reconnait un code bcrypt avec le début '$2y' dans '$2y$10$', le $10 est le coût algorithmique autrement dit 210 = 1 024 itérations. Les 22 caractères suivants sont le salt donc le grain de sel aléatoire. Les caractères restants sont le mot de passe encodé et l'authentification (hash-value)... lire https://www.bcrypt.fr/questions, cela donne plus d'infos.

          On peux s'amuser également à créer et vérifier sur : https://bcrypt-generator.com/

          @minie : oui pour l'utilisation dans joomla de JUserHelper::hashPassword pour Joomla
          Hashing password with Joomla 3. GitHub Gist: instantly share code, notes, and snippets.



          En résumé, le nombre d'itérations implique un calcul plus long et plus fastidieux pour les scripts de hacks et même si la base de données était piraté, cela me semble un peu plus difficile de retrouver le mot de passe... comme ce fut le cas l'année dernière pour dailymotion (ce service de video utilisent bcrypt également) : https://www.information-security.fr/...didentifiants/

          Ce n'est qu'un avis mais bcrypt a donné un peu plus de sécurité à Joomla, cela n’empêche pas d'imposer un minimum de caractères, mélange min/maj, caractères spéciaux aux mots de passe pour fonctionner un peu plus efficacement. Il faut éviter par exemple que les utilisateurs utilisent uniquement leur date d'anniversaire pour le mot de passe ... (chercher "paradoxe des anniversaires" dans un moteur de recherche si vous aimez les probabilités )...

          De plus, il y a aujourd'hui un marché de solutions complémentaires à connaître : double authentification (google authenticator et dérivé), sans mot de passe comme launchkey.com, par sms avec accountkit de facebook...

          Et pour répondre à la question... On ne peut pas décoder un mot de passe car le hachage est à sens unique (indéchiffrable), donc si l'utilisateur a oublié son code, il faudra absolument le remplacer.
          Superbe réponse qui, une fois encore, est précise, complète, pédagogique et utile. Merci Yann!
          Christophe (cavo789)
          Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X