Changer un mot de passe ou tous les mots de passe de Joomla

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

  • Changer un mot de passe ou tous les mots de passe de Joomla

    Je partage mon script en PHP procédural pour changer un mot de passe ou tous les mots de passe de Joomla :
    https://github.com/ZerooCool/requetes-sql-joomla

    J'ai lu que Joomla utilise maintenant bcrypt().

    J'ai également lu que les : ne seraient plus utilisés ... ?

    Lors de mes tests, les hashs générés ont tous les : car j'utilise password_hash() pour générer mon hash.
    $lepassword = password_hash("$newpassword", PASSWORD_DEFAULT);

  • #2
    J'avais étudié le truc à l'époque, dans la cadre du développement d'applications clientes sous Windows et Android pour certains de mes site Joomla, afin d'utiliser les mêmes mots de passe.

    Lors du passage à une 3.x je ne sais plus laquelle, une 2ème niveau de cryptage a été implémenté, et on ne peut plus isoler le salt.

    La procédure est assez complexe (plusieurs passes), je n'ai pas chercher à comprendre.
    J'ai mis en place ma méthode de cryptage pour contrôler et stocker mes MdP cryptés pour mes applis afin de ne plus être dépendant d'une telle évolution, car cela a été un peu la panique, plus personne ne pouvait utiliser mes applis.

    Dans les versions actuelles de Joomla, lors du login, si tu as encore une mot de passe crypté avec un : , joomla applique le nouveau cryptage et le : disparait.

    Donc par exemple sans rien faire dans la base de donnée la rubrique de mot de passe crypté (password) qui était :
    62e19eaeb5796e9d75f617864358932e:JwLinYw7zzMcrqGCi ...
    devient
    $2y$10$MFYL1kYdt/xAdDYmrJPNd.4mlMRwbWt/sG3eFPIXxAY...

    Ceci juste quand l'utilisateur s'identifie, sans qu'il ait quoi que ce soit à faire.
    Dernière édition par roland_d_alsace à 26/05/2019, 21h20
    A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
    Rejoignez le Joomla Users Groupe Alsace...
    roland_d_alsace va-t-il devenir roland_du_grand_est ?

    Commentaire


    • #3
      Merci de cette précision.
      En fait, en te lisant, je comprend que le script que j'ai partagé semble cohérent car j'utilise password_hash() et j'obtiens bien des hashs du type $2y$10$MFYL1kYdt/xAdDYmrJPNd.4mlMRwbWt/sG3eFPIXxAY...

      J'avais pu voir en consultant ma base, différents hash dans la colonne des mots de passe.
      De vieux hash md5 , des hash du type 62e19eaeb5796e9d75f617864358932e:JwLinYw7zzMcrqGCi ... avec les deux points, et, également le dernier type de hash $2y$10$MFYL1kYdt/xAdDYmrJPNd.4mlMRwbWt/sG3eFPIXxAY...

      Joomla semble bien accepter les différents types de hash pour la connexion, quoi que, je n'ai pas re vérifié pour les anciens hash md5, mais, je suppose qu'ils passent encore.

      Par contre, quand tu dis :
      Donc par exemple sans rien faire dans la base de donnée la rubrique de mot de passe crypté (password) qui était :
      62e19eaeb5796e9d75f617864358932e:JwLinYw7zzMcrqGCi ...
      devient
      $2y$10$MFYL1kYdt/xAdDYmrJPNd.4mlMRwbWt/sG3eFPIXxAY...
      Est ce que tu veux dire que la connexion se fera normalement, ou bien, que l'ancien type de hash est mis à jour pour un nouveau type de hash, dans la base de données ?

      Si oui, il faudrait que je vérifie ça, si effectivement les anciens hash se mettent à jour pour le nouveau format suite à une connexion, mais, ça me semble étrange, le hash étant obtenu à partir du mot de passe, je ne sais pas trop comment le mécanisme transformerait un ancien hash en un nouveau hash pour représenter le même mot de passe.

      Quoi qu'il en soit, si mon script maison, en PHP procédurale, peut servir à quelqu'un, il est fonctionnel et permet donc de modifier un ou plusieurs mots de passe, dans la base de données de Joomla.

      Je trouve plus pratique l'approche en PHP procédurale, plutôt que de donner dans la documentation de joomla, un hash prédéfini, pour le mot de passe "secret" ou "admin".
      Donner le hash "secret" ou "admin" est la méthode grand débutant.

      J'ai trouvé quelques rares exemples dans Joomla, pour hasher correctement son mot de passe, mais, avec les commandes internes à Joomla.
      J'ai encore du mal à utiliser les options spécifiques à Joomla.

      Passer par du PHP procédurale a été plus facile pour moi.
      On pourra dire que c'est une méthode intermédiaire et fonctionnelle.

      Je suppose que bon nombre d'utilisateurs Joomla ont des connaissances en PHP mais n'ont pas forcément les connaissances pour utiliser les commandes interne à Joomla.
      Il est donc plus facile d'utiliser mon script PHP, pour bon nombre de développeur, qui n'auraient pas assimilés la programmation de modules, plugins et composants Joomla.

      Arriver à décliner ce même processus soit même, en utilisant les commandes internes, pour créer son propre module ou composant, est la cerise sur le gâteau.

      Quoi qu'il en soit, le script proposé est fonctionnel et permet de générer et de remplacer un ou plusieurs mots de passe à la volée.
      On pourrait imaginer des cas ou cela peut s'avérer utile ... Un site piraté, par exemple, qui, devant protéger les comptes utilisateurs, se verrait amené à devoir modifier l'ensemble des mots de passe utilisateurs, pour pousser les utilisateurs à effectuer une récupération de mot de passe, et, empêcher ainsi un pirate d'accéder aux comptes utilisateurs.

      Le script présenté a été bricolé pour Damien T. qui me disait vouloir dresser une liste de mots de passe utilisateurs, à donner directement aux membres d'une association.
      L'administrateur ne devrait pas forcément avoir à connaître lui même les mots de passe qu'il va donner aux utilisateurs ni ne devrait avoir à dresser une liste des mots de passe.
      La récupération de mots de passe semble la encore préférable, pour les utilisateurs qui auraient un compte créé par les soins de l'administrateur.
      Aux utilisateurs de récupérer eux même leurs mots de passe.

      Malgré tout, on peut imaginer des situations ou il peut être intéressant de créer des comptes et de connaître à l'avance les mots de passe, lors de formations par exemple.
      Mon script permet donc de modifier les mots de passe et affiche également la liste des nouveaux mots de passe, en fonction de l'id utilisateur et de son login.
      Dernière édition par ZerooCool à 27/05/2019, 01h14

      Commentaire


      • #4
        Envoyé par ZerooCool Voir le message
        Merci de cette précision.

        Par contre, quand tu dis :

        Est ce que tu veux dire que la connexion se fera normalement, ou bien, que l'ancien type de hash est mis à jour pour un nouveau type de hash, dans la base de données ?

        Si oui, il faudrait que je vérifie ça, si effectivement les anciens hash se mettent à jour pour le nouveau format suite à une connexion, mais, ça me semble étrange, le hash étant obtenu à partir du mot de passe, je ne sais pas trop comment le mécanisme transformerait un ancien hash en un nouveau hash pour représenter le même mot de passe.
        Cela ne pose pas de problème.

        S'il y a un : dans le MpD crypté, on fera le contrôle selon l'ancienne méthode, si on autorise le login, Joomla possède à ce moment là le le MdP en clair, il peut appliquer le nouveau cryptage sur le MdP.

        On peut ainsi obtenir le MdP en clair dans un plugin au moment du login, c'est comme cela que je procède pour le crypter à ma manière pour mes applis.

        Le problème étant que si tu utilise tes propres fonctions, dès que Joomla fera une modification sur le cryptage, ton système ne fonctionnera plus et tu risque de bloquer tes utilisateurs. C'est ce qui m'est arrivé, et du coup j'ai opté pour stocker ma clé crypté en DB et rester maitre du processus sur mes applis.
        Sinon en php, il faut utiliser les fonctions du framework, c'est incontournable.
        Dans mon cas ce n'était pas du php mais des applis clientes, il n'y avait donc pas vraiment d'autre solution.
        Dernière édition par roland_d_alsace à 27/05/2019, 08h05
        A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
        Rejoignez le Joomla Users Groupe Alsace...
        roland_d_alsace va-t-il devenir roland_du_grand_est ?

        Commentaire


        • #5
          Si je comprend bien, les mots de passe avec : ne sont pas si sécurisés que ça, puisque tu me dis qu'on peut obtenir le mot de passe d'origine.
          Hors, un bon mécanisme de sécurité ne doit pas permettre de récupérer le mot de passe d'origine, mais, doit permettre de comparer si le hash correspond au mot de passe.

          Je suppose que l'utilisation de password_hash() est cohérente : https://www.php.net/manual/fr/functi...sword-hash.php
          Je lis que l'algorithme de hachage est fort et irréversible.

          Commentaire


          • #6
            Envoyé par ZerooCool Voir le message
            Si je comprend bien, les mots de passe avec : ne sont pas si sécurisés que ça, puisque tu me dis qu'on peut obtenir le mot de passe d'origine.
            Hors, un bon mécanisme de sécurité ne doit pas permettre de récupérer le mot de passe d'origine, mais, doit permettre de comparer si le hash correspond au mot de passe.
            .
            Le cryptage concerne le stockage dans le DB.

            Mais au moment du login, le mot de passe est bien envoyé en clair à ton serveur afin que le script php de Joomla le crypte selon la méthode adéquate et le compare avec celui stocké en DB.

            Il n'est pas crypté par un script JS au niveau du navigateur avant l'envoi dans le formulaire.

            Il circule donc bien en clair dans la trame html en mode "post".

            Envoyé par ZerooCool Voir le message

            Je suppose que l'utilisation de password_hash() est cohérente : https://www.php.net/manual/fr/functi...sword-hash.php
            Je lis que l'algorithme de hachage est fort et irréversible.
            Il me semble que dans sa méthode actuelle, il y a plusieurs "passes" de cryptage.
            A mon souvenir, ce n'était pas aussi simple que cela et la fonction était assez complexe.
            Je regarderai à l'occasion, mais actuellement je suis en mode "bricolage maison", assez loin de mon poste de dev.

            Dernière édition par roland_d_alsace à 27/05/2019, 17h21
            A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
            Rejoignez le Joomla Users Groupe Alsace...
            roland_d_alsace va-t-il devenir roland_du_grand_est ?

            Commentaire


            • #7
              Ah oui effectivement, le mot de passe saisi en claire permet de vérifier si son hash correspond au hash mis en base de données.

              Mais tu penses que un hash obsolète en base de données, serait alors mis à jour automatiquement par Joomla, qui chiffrerait à nouveau le mot de passe ?
              J'ai un petit doute, mais, c'est possible que les dev aient pensés à inclure ça.

              Quoi qu'il en soit, password_hash() permet bien d'obtenir un hash cohérent et fort.
              Je pense qu'on peut se fier à cette fonction PHP, qui, de toute façon génère un hash plus sécurisé qu'un simple hash md5, à l'ancienne.

              Merci pour avoir alimenté ce fil de discussions, en espérant que ce script puisse servir à quelqu'un.

              Commentaire


              • #8
                Envoyé par ZerooCool Voir le message
                ...
                Mais tu penses que un hash obsolète en base de données, serait alors mis à jour automatiquement par Joomla, qui chiffrerait à nouveau le mot de passe ?
                J'ai un petit doute, mais, c'est possible que les dev aient pensés à inclure ça.
                Oui Bernard, c'est sûr, sinon cela aurait été un beau bazar lors de la mise à jour de Joomla. Plus aucun mot de passe n'aurait été bon.

                De + comme indiqué plus haut, les exemples de mdp crypté résultent du test fait hier soir pour te répondre.
                A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                Rejoignez le Joomla Users Groupe Alsace...
                roland_d_alsace va-t-il devenir roland_du_grand_est ?

                Commentaire


                • #9
                  Je reste tout de même dubitatif sur le fait que joomla changerait les hash automatiquement, mais, si tu me dis que c'est le cas, je vais considéré que c'est bien le cas.
                  Il faudrait voir à ajouter un simple hash md5 pour un mot de passe secret, et, observer si après connexion, le hash est modifié, ce que tu sembles avoir fait avec un md5 déjà salé.

                  Lors de mes tests, en utilisant la fonction php password_hash() , suite à connexion, les hash ne changent pas.
                  Cela pourrait vouloir dire que le hash est considéré comme cohérent.

                  Dès lors, le script que je propose semble cohérent et hash correctement les mots de passe.

                  Commentaire

                  Annonce

                  Réduire
                  1 sur 2 < >

                  C'est [Réglé] et on n'en parle plus ?

                  A quoi ça sert ?
                  La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                  Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                  Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                  Comment ajouter la mention [Réglé] à votre discussion ?
                  1 - Aller sur votre discussion et éditer votre premier message :


                  2 - Cliquer sur la liste déroulante Préfixe.

                  3 - Choisir le préfixe [Réglé].


                  4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                  2 sur 2 < >

                  Assistance au forum - Outil de publication d'infos de votre site

                  Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                  Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                  Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                  UTILISER À VOS PROPRES RISQUES :
                  L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                  Problèmes connus :
                  FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                  Installation :

                  1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                  Archive zip : https://github.com/AFUJ/FPA/zipball/master

                  2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                  3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                  4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                  5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                  6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                  et remplacer www. votresite .com par votre nom de domaine


                  Exemples:
                  Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/
                  Pour executer le script: http://www..com/fpa-fr.php

                  Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                  Télécharger le script fpa-fr.php dans: /public_html/cms/
                  Pour executer le script: http://www..com/cms/fpa-fr.php

                  En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                  Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                  Voir plus
                  Voir moins

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X