Recherche sur le site Web

Tester WordPress Connects avec Hydra sur Kali Linux


Présentation

Il existe des formulaires Web partout sur Internet. Même les sites qui ne permettent généralement pas aux utilisateurs réguliers de se connecter ont probablement une zone d'administration. Il est important lors de l'exécution et du déploiement d'un site pour s'assurer que l'accès de déclenchement des mots de passe aux contrôles sensibles et aux panneaux d'administration est aussi sécurisé que possible.

Il existe différentes façons d'attaquer une application Web, mais ce guide va couvrir en utilisant HYDRA pour effectuer une attaque par force brute sur un formulaire de connexion. La plate-forme cible de choix est WordPress. C'est facilement la plate-forme CMS la plus populaire au monde, et il est également connu pour être mal géré.

N'oubliez pas, Ce guide est destiné à vous aider à protéger votre WordPress ou votre autre site Web. Utiliser sur un site que vous ne possédez pas ou que vous avez l'autorisation écrite à tester est illégal .

Se mettre en place

Avant de faire quoi que ce soit, vous aurez besoin d'un site Web WordPress pour cibler. Ce guide suppose également que vous hébergez le site WordPress sur votre propre machine. Si vous avez besoin d'aide pour configurer la lampe sur votre machine, consultez nos guides de la lampe Debian Lamp et Ubuntu.

Vous pouvez le faire soit sur une installation Linux régulière, soit sur une installation Kali Linux. Si vous utilisez Kali, suivez la lampe debian du guide source. Assurez-vous simplement que Hydra et Curl sont installés sur le système que vous choisissez. Ils sont disponibles dans la plupart des référentiels.

Si vous ne voulez vraiment pas utiliser votre installation régulière, vous pouvez certainement utiliser une autre machine, juste sous la cible IP pour LocalHost, et assurez-vous que la machine cible est accessible à partir de celle d'attaque.

Rassembler des informations

Une fois que vous avez un WordPress opérationnel, il est temps de trouver autant d'informations que possible sur l'installation que vous ciblerez. Cela signifie découvrir comment le formulaire de connexion est construit, ce qui se passe lorsque vous le soumettez, et peut-être où il va si la connexion réussit.

Source HTML

Commencez par accéder à la page de connexion. Vous pouvez le trouver chez localhost/wp-login.php . Utilisez la capacité de votre navigateur pour inspecter le code source. Vous pouvez simplement cliquer avec le bouton droit quelque part sur la page et sélectionner «Afficher la source» ou «Inspecter l'élément». Quoi qu'il en soit, vous pouvez afficher la source, il sera simplement affiché de différentes manières.

Recherchez vers le milieu du code. Vous cherchez les balises. C'est le formulaire de connexion réel. À l'intérieur de ce formulaire se trouvent quelques informations dont vous avez besoin.

Avant de collecter les informations, vérifiez si le formulaire envoie une demande Get ou Post. Dans la première ligne du formulaire, il devrait y avoir une option de méthode qui ressemble à ceci: méthode="post" . Dans le cas de WordPress, c'est un post.

Tout d'abord, trouvez l'entrée du nom d'utilisateur. Cela devrait ressembler à la ligne ci-dessous.

<input type="text" name="log" id="user_login" class="input" value="" size="20" />

La partie dont vous avez besoin est le nom . Dans ce cas, c'est log .

Ensuite, recherchez l'entrée du mot de passe. Il devrait être similaire.

<input type="password" name="pwd" id="user_pass" class="input" value="" size="20" />

Encore une fois, recherchez le nom qui est pwd .

Vous devez également identifier le bouton Soumettre afin que Hydra peut soumettre le formulaire.

<input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="Log In" />

Il est important de journaliser à la fois le nom et la valeur .

Il y a un dernier morceau. Si vous ne l'avez pas remarqué, il y a deux champs cachés au bas du formulaire. L'un dit à WordPress de rediriger lorsque le formulaire est soumis et l'autre est un cookie que WordPress recherchera lorsque le formulaire sera soumis. Vous avez besoin du cookie.

<input type="hidden" name="testcookie" value="1" />

Encore une fois, notez le nom et valeur .

boucle

Même s'il y avait beaucoup d'informations à gagner en regardant la source HTML, il y a d'autres choses que vous devez savoir avant de libérer Hydra. Dans la plupart des cas, cependant, vous pourrez peut-être exécuter le test avec les informations que vous avez recueillies. Vous tenteriez simplement de vous connecter avec des informations d'identification incorrectes, d'enregistrer le message d'erreur et d'utiliser ce message comme condition de test défaillant dans HYDRA.

Cependant, WordPress est conçu différemment, et il n'y a pas vraiment de bon moyen de tester avec des tentatives infructueuses pour vous connecter. Pour cette raison, vous devez tester une connexion réussie. Parce que vous pouvez maintenir votre propre installation WordPress et vous connecter à Cela, cela ne ferait pas de différence si vous testiez un système pour un client. La condition que vous trouvez localement devrait être universelle à WordPress.

Il y a aussi une autre ride ici. Vous souvenez-vous du champ de redirection caché dans la forme? Eh bien, cette redirection vous empêche d'utiliser une condition comme la présence du mot, «tableau de bord», pour tester également le succès. Vous allez devoir jeter un œil à la demande elle-même, et pour cela, il y a une boucle.

Afin de comparer, vous devez d'abord voir la page de connexion d'origine avec Curl.

$ curl -v http://localhost/wp-login.php

La majorité des informations sont les mêmes que le code source que vous avez examiné dans le navigateur. En haut, cependant, des informations sur la demande HTTP. Prenez note de ces informations. Vous devrez le comparer à une connexion réussie.

La prochaine chose que vous devez faire est de vous connecter avec succès avec Curl. Pour ce faire, vous aurez besoin de ce cookie de la demande précédente. Jetez un œil aux données HTTP et localisez une ligne qui ressemble à celle ci-dessous.

< Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/

Vous allez avoir besoin de la pièce wordpress_test_cookie=wp + cookie + check .

Très bien, vous allez maintenant avoir besoin des informations que vous avez recueillies à partir du HTML avec ce cookie pour faire la demande. C'est à quoi il devrait ressembler.

curl -v --data 'log=username&pwd=realpassword&wp-submit=Log+In&testcookie=1' --cookie 'wordpress_test_cookie=WP+Cookie+check' http://localhost/wp-login.php

Ainsi, vous avez la même demande de base qu'avant, mais cette fois, vous utilisez l'indicateur - Data et le - Indicateur cookie Vous voulez interagir avec et ce cookie , donc le formulaire se soumettera réellement.

Cette chaîne de données, log=username & pwd=realPassword & wp-submit=log + in & testcookie=1 correspond directement aux informations que vous avez recueillies à partir du HTML. Il dit pour brancher la valeur «nom d'utilisateur» dans l'entrée appelée log et la valeur «realPassword» dans l'entrée appelée pwd . Assurez-vous d'utiliser le nom d'utilisateur et le mot de passe réels pour vous connecter. Ensuite, utilisez la soumission avec le nom WP-Sumit et une valeur de Connectez-vous pour soumettre les données. À la fin, c'est testcookie avec une valeur 1 . Cela dit simplement à Curl de soumettre cela avec le reste des données de formulaire.

Lorsque Curl termine la demande, vous ne verrez vraiment aucun HTML, juste beaucoup d'informations sur la demande. Rappelez-vous que la redirection qui a fait des tests avec le «tableau de bord» ne fonctionne pas comme une condition de test? Eh bien, maintenant la redirection elle-même sera la condition de test. Jetez un œil à la ligne ci-dessous.

< Location: http://localhost/wp-admin/

Cette ligne n'était pas dans la demande précédente. Il ne contient pas non plus d'informations spécifiques liées à cet utilisateur ou à la connexion. Cela signifie qu'il toujours sera présent lors d'une connexion WordPress réussie, ce qui en fait la condition de réussite parfaite avec laquelle tester.

Test avec hydra

Enfin, vous avez tout ce dont vous avez besoin pour tester vos mots de passe avec HYDRA. Le point de ce guide n'est pas tant de couvrir la syntaxe Hydra, mais il décomposera la commande utilisée. Si vous voulez en savoir plus sur Hydra, consultez le guide SSH qui va dans plus de détails.

Il n'y a vraiment qu'une seule commande dont vous avez besoin pour Hydra pour exécuter les noms d'utilisateur et les mots de passe possibles pour tester la sécurité de votre site WordPress. La chose la plus simple à faire est de jeter un œil à la commande et de la décomposer.

$ hydra -L lists/usrname.txt -P lists/pass.txt localhost -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'

D'accord, donc c'est évidemment beaucoup à prendre en même temps. L'indicateur -l indique à Hydre d'utiliser une liste de mots des noms d'utilisateur chez listes/usrname.txt . De même, l'indicateur -p indique à Hydra d'utiliser une liste de mots de mots de passe sur listes/pass.txt . localhost indique à Hydra de cibler LocalHost, et -v lui dit de journaliser chaque test de la sortie de la console.

Le reste de la commande traite de la demande HTTP elle-même. http-form-post active le module HYDRA pour gérer les formulaires HTTP avec une méthode post. N'oubliez pas avant que le formulaire de connexion WordPress soit en face d'un post de. La chaîne qui suit contient tous les paramètres que Hydrara utilisera. Vous devez remarquer qu'il est très similaire à celui utilisé pour vous connecter via Curl.

La chaîne se compose de différentes sections séparées par : . La première partie est l'adresse exacte qui est testée, /wp-login.php . La partie suivante est presque exactement comme celle utilisée par Curl. Il passe des valeurs dans la forme et le soumet, y compris le cookie. Au lieu de passer des valeurs littérales, Hydra utilise en fait des variables. Remarquez dans log=^utilisateur ^ et pwd=^pass ^. Ce sont des variables séparées avec le caractère carotte qui prennent les valeurs des listes de mots et les transmettent dans la demande de chaque test que Hydra exécute.

Le tout dernier morceau de la chaîne est la condition de test. s signifie qu'il teste le succès. Si vous vouliez tester l'échec, vous utiliseriez f . Vous définissez cela égal au mot ou à la phrase qu'il teste. Pensez si cela ressemble presque à grep .

Lorsque vous exécutez ceci, vous devriez obtenir un résultat positif, à condition que le nom d'utilisateur et le mot de passe corrects soient dans les listes de mots que vous avez fournies HYDRA.

Réflexions de clôture

Tout d'abord, félicitations pour avoir réussi tout cela. Si vous avez réussi, vous avez maintenant une méthode solide pour tester la force du mot de passe de vos comptes d'utilisateurs WordPress.

Ce guide a été adapté à WordPress, mais vous pouvez facilement suivre les mêmes étapes pour tester d'autres formulaires Web. Si vous exécutez une application Web avec plusieurs utilisateurs, c'est certainement une bonne idée de faire
sûr qu'ils utilisent des mots de passe forts. Cela peut vous aider à informer votre politique de mot de passe. Encore une fois, assurez-vous que vous ne testez toujours qu'avec la permission.

Articles connexes: