Comment connaître la force du mot de passe Wordpress (déjà enregistré)?

10

Je suis responsable de la sécurité de nombreux serveurs d'hébergement mutualisé. La plupart d'entre eux ont des sites Web WordPress. Chaque serveur possède au moins 500 sites Web WordPress.

Dans mon expérience, le problème avec WordPress commence avec un mot de passe faible. La plupart du mot de passe administrateur du site Web est très faible et l'utilisation du site Web à mot de passe faible est exploitée et utilisée pour diverses activités malveillantes.

Maintenant, mon plan est de découvrir le mot de passe faible du site Web WordPress et de changer de force le mot de passe administrateur en un autre mot de passe fort. Ainsi, WordPress peut être sécurisé et mon serveur ne sera pas en difficulté.

Quelle est la façon de connaître la force du mot de passe WordPress stocké?

Mani
la source

Réponses:

8

Hachures Bruteforce

Vous pouvez brutaliser le hachage stocké dans la base de données.

WordPress utilise phpass pour le hachage. Par défaut, WordPress n'utilise pas Blowfish ou similaire, mais juste md5 avec un nombre d'itérations de 8192. Si vous voulez juste trouver des mots de passe vraiment mauvais, le bruteforcing est certainement faisable.

Mais je considérerais cela comme une violation assez importante de la confiance que les utilisateurs placent en vous, donc je ne recommanderais pas cette approche.

Analysez leurs mots de passe lors de la connexion

Vous pouvez ajouter un script qui intercepte toutes les demandes aux scripts de connexion WordPress, et enregistrer ou analyser les mots de passe, car ils sont en texte clair à ce stade.

Bien sûr, cela n'attrape les mots de passe faibles qu'une fois qu'un utilisateur se connecte. S'ils ont abandonné leur site ou sont plutôt inactifs, cela peut prendre un certain temps avant que vous découvriez qu'ils utilisent un mot de passe faible.

Je considérerais cela comme une violation encore plus importante que le renforcement brutal des hachages, et cela comporte également des problèmes de sécurité (si vous stockez les mots de passe en texte clair, ce serait évidemment un problème, mais même si ce n'est pas le cas, vous pouvez accidentellement stocker des informations de l'analyse qui peut aider un attaquant).

Mettre en œuvre une politique de mot de passe (et forcer les utilisateurs à changer leurs mots de passe)

Vous pouvez implémenter une politique de mot de passe. Lorsqu'un utilisateur soumet un nouveau mot de passe, vous vérifierez s'il est conforme à votre politique ou non (idéalement, cela se produirait côté serveur, pas côté client via JavaScript).

La rédaction d'une bonne politique de mot de passe est difficile, alors jetez un œil aux politiques existantes pour vous aider ici.

Bien sûr, les anciens mots de passe ne sont pas affectés par la politique, vous devez donc forcer les utilisateurs à modifier leurs anciens mots de passe pour se conformer à la politique

Limiter les dommages

L'application de mots de passe forts peut certainement être une bonne idée, mais idéalement, une instance WordPress piratée ne devrait pas vraiment vous affecter en tant que webmaster.

Vous devriez vouloir limiter les dégâts une fois qu'un attaquant a accédé à une installation WordPress. Idéalement, vous voudriez que seule une instance soit affectée, pas l'ensemble de votre serveur (vous pouvez donc vous inquiéter qu'un attaquant place du contenu indécent sur un site Web - tout comme un utilisateur valide pourrait le faire -, mais pas sur l'exécution de code ou d'autres programmes malveillants activité).

C'est un sujet assez large, mais certains points incluent DISALLOW_FILE_EDIT:, l'utilisation limitée des plugins (car ils sont beaucoup moins sécurisés que WordPress lui-même), interdire JavaScript (par exemple avec les multisites, seuls les super-administrateurs ont le droit de publier JavaScript, pas admins), etc.

Tim
la source
4

Je ne suis pas sûr que ce soit même possible. Lorsque vous sélectionnez votre mot de passe, il est stocké haché dans la base de données. Il n'y a pas d'ingénierie inverse en matière d'algorithmes de hachage.

Dans mon expérience, script pour mot de passe est strenght situé dans www.example.com/wp-admin/js/password-strength-meter.js, et c'est le lien.

Vous pouvez modifier les niveaux et le pourcentage des mots de passe ici, vous pouvez donc définir une force de mot de passe obligatoire à 100/100.

Et, si vous voulez que votre client vérifie la force du mot de passe, il y a une application mignonne qui peut vous donner la force du mot de passe ici.

Il est impossible de faire de l'ingénierie inverse ici, et en plus, il y a peu de plugins qui forcent les utilisateurs à obtenir des mots de passe forts.

Josip Ivic
la source
1
Cela semble être une chose simple et évidente que les hébergeurs et les propriétaires de sites Web peuvent faire pour se protéger. Très bonne question et réponse! Je ne suis pas sûr que cela ait déjà été abordé ici auparavant. Elle n'a au moins pas été abordée depuis longtemps. À votre santé!!
closetnoc
1
La réponse ci-dessus est bonne, mais elle ne résout pas mon problème. La plupart des sites Web WordPress sont déjà installés ou dans une journée, des centaines d'installations WP se déroulent sur mon serveur. Supposons que je modifie la force du mot de passe à l'aide de password-Strength-meter.js, qui ne m'est toujours pas utile. Bcoz, le pwd est déjà réglé. Cela ne sera utile que pour le nouveau mot de passe, pas pour celui qui est déjà défini.
Mani
1
Mais, vous ne pouvez pas trouver tous les mots de passe de la base de données car ils sont hachés. Vous pouvez définir cela, puis renvoyer à tous les utilisateurs pour modifier leurs mots de passe afin qu'ils puissent avoir des mots de passe forts. Je ne vois pas d'autre moyen de contourner cela. Vérifiez également les réponses ci-dessous.
Josip Ivic
2
@Josip Ivic, le seul moyen est de réinitialiser pwd et d'informer l'administrateur comme vous l'avez dit.
Mani
1
Pour les nouveaux utilisateurs, je réglerais simplement le script sur wp sur le serveur, il est donc obligatoire d'avoir des mots de passe forts, et pour les anciens utilisateurs, je leur renverrais des courriers afin qu'ils puissent changer leurs mots de passe en mots forts. Comme je l'ai dit, il n'y a pas de moyen facile de le faire, mais c'est faisable. :)
Josip Ivic
3

Les bonnes nouvelles sont que vous pouvez changer les mots de passe des utilisateurs, les mauvaises nouvelles sont que vous ne pouvez pas les voir.
Wordpress est si puissant que même dans la base de données, il stocke le mot de passe avec un cryptage à sens unique, ce n'est pas seulement un hachage md5 que vous pouvez convertir, ce ne sont même pas des données sérialisées, pour le mot de passe, test123vous obtiendrez quelque chose comme $P$BjW8o9Dm1vC5bwAcP1iAdNVm0lbvn, même si vous modifiez le champ de mot de passe dans la base de données sans utiliser de cryptage, cela ne fonctionnerait pas.

Comment changer le mot de passe

Je pense que vous en êtes conscient, mais je vais le laisser ici. Vous pouvez entrer votre tableau de bord wordpress avec des privilèges d'administrateur, aller aux utilisateurs, trouver un utilisateur et cette partie est un peu mauvaise pour vous car vous devez cliquer sur générer un nouveau mot de passe, cela vous donnera une soupe aléatoire de lettres et de symboles et vous pouvez modifiez-le avec le vôtre, mais même alors, vous ne pouvez pas voir le mot de passe.

knif3r
la source
Vous avez oublié de mentionner que vous pouvez utiliser un plugin comme iThemes pour obliger les utilisateurs à entrer des mots de passe forts, permettre également la protection par force brute et d'autres fonctionnalités intéressantes qui pourraient vous intéresser.
knif3r
3

Comme les mots de passe sont hachés, la seule façon de tester leur sécurité est de les forcer brutalement. Rassemblez une liste de mots de passe faibles et couramment utilisés et testez-les par rapport aux hachages stockés dans votre base de données.

À moins que vous n'utilisiez une liste de mots de passe très exhaustive, cela n'attrapera pas tous les mots de passe faibles, mais cela filtrera les plus faibles d'entre eux.

Tom van der Zanden
la source
C'est une solution qui nécessite beaucoup de temps.
Josip Ivic
C'est ce qu'on appelle la construction d'une table arc-en-ciel.
Ashfame
@Ashfame Non, ce n'est pas le cas. Une table arc-en-ciel est une approche beaucoup plus sophistiquée qui n'est pas nécessairement la plus appropriée pour ce scénario.
Tom van der Zanden
@TomvanderZanden Ce n'est peut-être pas une approche appropriée, mais comment ce ne sera pas une table arc-en-ciel?
Ashfame
@Ashfame Parce que les tables arc-en-ciel sont beaucoup plus sophistiquées que "vérifier une liste de mots de passe par rapport à votre base de données". Les tables arc-en-ciel, par exemple, utilisent des chaînes de hachage et des fonctions de réduction. Notez également que la création d'une table arc-en-ciel prend plus de temps que la simple vérification de tous les mots de passe par rapport à votre base de données. L'utilisation d'une table arc-en-ciel précalculée peut avoir du sens, mais cela peut être exagéré pour cette situation.
Tom van der Zanden
1

Vous ne pouvez pas forcément changer le mot de passe administrateur wp, sauf si vous n'avez aucun contrôle dans chaque base de données wordpress, qui est stockée dans phpmyadmin.

Et non, il n'y a aucun moyen rapide de trouver le mot de passe de la semaine sur le site 500 wordpress. Josip mentionne un lien pour vérifier la force du mot de passe, mais ce site n'a pas utilisé md5 crypto algo pour vérifier la force du mot de passe.

Vérifiez ce lien SO ( Wordpress utilisant MD5 ) et vous verrez que la sortie est différente de celle de l'application. Donc, comme vous le voyez, ce p#aSS*Word14n'est pas sécurisé, Dance With Me Tonightalors n'utilisez pas l'application tierce pour vérifier votre mot de passe Wordpress, car il se peut qu'ils utilisent un autre algorithme de cryptographie pour vérifier / assumer la force du mot de passe.

Vous devriez également avoir tous les mots de passe et les tester un par un, il n'y a pas de truc magique pour le découvrir rapidement.

Une autre chose est que, si un site WordPress est piraté, cela n'affecte pas les autres sites wp du même serveur (sauf attaque DOS). J'ai vu beaucoup de gens démarrer wp dans l'hébergement mutualisé, et leur site est piraté, mais leur site voisin fonctionnait toujours bien, car chaque wp a sa propre base de données sur phpmyadmin.

Goyllo
la source
Didn't affect other WP site on same server:Coïncidence! Dépend du type d'attaque / piratage et de l'intention du pirate / bot.
Ashfame
Je parle de sécurité wordpress, pas d'une sécurité de niveau racine. Mais je suis sûr, la plupart de tous les hébergeurs utilisant le mécanisme sandbox n'ont pas affecté les autres sites Web sur le même serveur.
Goyllo
1

Comme les réponses précédentes l'ont souligné: vous ne pouvez pas lire les mots de passe stockés.

Une solution alternative pourrait être:

  1. Mettez en œuvre la suggestion de Josip Ivic pour appliquer des mots de passe forts.
  2. Supprimez tous les mots de passe (ou seulement les mots de passe pour les utilisateurs avec certains privilèges).
  3. Enfin, informez les utilisateurs concernés qu'une nouvelle stratégie de mot de passe est en vigueur et demandez-leur /wp-login.php?action=lostpasswordde réinitialiser leurs mots de passe.
Syberspace
la source
1

Les mots de passe WordPress sont hachés, comme toute application sensée le ferait lorsqu'il s'agit de stocker des mots de passe, car le stockage de mots de passe en texte clair est très peu sûr, car vos utilisateurs peuvent avoir le même mot de passe pour les autres services qu'ils utilisent (pensez à gmail?).

Il n'est pas possible de reconvertir le hachage en mot de passe, sinon on pourrait aussi bien les stocker en texte clair. Les mots de passe étaient auparavant hachés, MD5mais cela a été prouvé par une équipe de sécurité, donc l'algorithme de hachage a été mis à jour phpass.

Astuce: WordPress peut toujours réussir à le hacher correctement même si vous mettez à jour MD5 (% password%) dans la colonne sql.

Désormais, la manière pratique d'aborder ce que vous essayez de faire pour un seul site est de forcer un changement de mot de passe en changeant la colonne en quelque chose d'autre et en appliquant des exigences de force de mot de passe sur la page où ils vont mettre à jour leur mot de passe. Mais votre cas d'utilisation nécessite de le faire sur de nombreuses installations WP et ces propriétaires de sites pourraient ne pas apprécier que vous le fassiez sans leur consentement. Donc, vous devez certainement limiter la portée de l'impact de vos actions.

1) Mettez à jour les mots de passe uniquement pour les administrateurs, les éditeurs, mais vous devez savoir qui sont ces utilisateurs. Envoyez-les par e-mail, puis appliquez la restriction de mot de passe sur la page de réinitialisation du mot de passe / page d'inscription, etc. N'oubliez pas que quelqu'un peut avoir ces formulaires ailleurs sur le site (pensez également aux formulaires AJAX). Création d'une commande WP-CLI qui vous aide ici dans l'exécution de ce plan, plutôt que de charger l'environnement WP et d'exécuter des scripts.

2) Génération d'une table arc-en-ciel qui consiste en un mot de passe haché pour une chaîne connue (mot de passe). Et puis, vous devez essentiellement faire correspondre le hachage avec le mot de passe d'un utilisateur particulier et évaluer la force de ce mot de passe. La génération du tableau est l'étape la plus lente ici car vous devez hacher chaque mot de passe possible, le stocker sur le disque (plusieurs Go en fonction de la longueur et de la combinaison de mots de passe que vous comptez), puis agir sur les résultats. 99% sûr que c'est une solution exagérée pour vos besoins.

Astuce: Vous connaissez ces sels et secrets que nous avons dans le wp-config.phpdossier. Les modifier invalide les sessions connectées, au cas où vous en auriez besoin.

Ashfame
la source
1

Essayez de le forcer à l'aide d'une attaque par dictionnaire

Quelle meilleure façon d'évaluer la force de votre mot de passe? :-) Oui je sais, ça va prendre du temps ...

Sinon, vous pouvez simplement supposer que tous les mots de passe sont faibles (je dirais que ce sera une hypothèse très précise ) et créer vous-même les mots de passe, stocker les hachages dans la base de données et donner le mot de passe en texte brut aux administrateurs en utilisant un "sécurisé" canal

Sinon, supposez à nouveau que tous les mots de passe sont faibles et forcez les administrateurs à les changer, et utilisez un validateur de force de mot de passe très pointilleux sur le site Web lui-même.

Gianluca Ghettini
la source