Bienvenue à mes amis passionnés de sécurité ! Aujourd’hui, je vais vous montrer comment pirater un site Web WordPress en utilisant le CTF de Mr. Robot comme exemple. Je viens moi-même de travailler sur cet excellent CTF et j’ai appris une tonne de choses dans le processus. Je voulais élever mon jeu d’analyse des vulnérabilités Web d’un cran et j’ai commencé par ce CTF.
Si vous voulez vraiment apprendre la cybersécurité, je vous recommande vivement de lire mon énorme guide du débutant Getting started with Cybersecurity in 2019, où je vous enseigne comment commencer, tout à fait gratuitement ! Vous pouvez également consulter l’article Les meilleurs livres de piratage en 2019.
DISCLAIMER : Ce » comment pirater un site WordPress » est un tutoriel de piratage éthique et s’adresse aux professionnels de la sécurité. Ne pas, je répète, ne pas utiliser ces techniques sans le consentement écrit de la partie destinataire. Si vous utilisez ce tutoriel dans un contexte illégal, des charges légales et/ou une peine de prison pourraient vous attendre. N’utilisez ces techniques que dans un environnement de laboratoire fermé.
Un CTF est un jeu dit de capture de drapeau, où votre objectif est de collecter un certain nombre de drapeaux (ou de clés, d’ailleurs). Les CTF permettent de mettre en pratique vos compétences en matière de piratage informatique dans un environnement sûr et légal. Je peux recommander Vulnhub comme ressource pour une sélection d’un excellent CTF.
Ok, commençons.
- Étape 1 – Évaluer si un site Web utilise WordPress
- Étape 2 – Attraper le code avec Burpsuite
- Étape 3 – Trouver le bon nom d’utilisateur
- Étape 4 – Bruteforcer les noms d’utilisateurs avec Hydra
- Étape 5 – Brute Forcer le mot de passe
- Étape 6 – Mise en œuvre du code malveillant dans WordPress
- Étape 7 – Démarrage d’un écouteur Netcat
- Veuillez partager!
Étape 1 – Évaluer si un site Web utilise WordPress
Si vous ne savez pas si un site Web utilise WordPress ou non, il existe surtout un moyen très facile de le savoir.
Vous pouvez simplement taper : www.addressofthewebsite.com/wp-admin
Ce qui, dans la plupart des cas, fera apparaître un gui de connexion wp-admin, sauf que l’administrateur l’a désactivé.
Un autre excellent moyen de vérifier si un Site Web utilise WordPress est d’utiliser wpscan. Wpscan est préinstallé dans Kali et ParrotSec.
wpscan -u www.addressofyourtarget.com
Dans mon cas, l’analyse de la VM de Mr. Robot révèle ce qui suit.
Comme vous pouvez le voir, il indique clairement que le site utilise WordPress. De plus, il vous présente les 46 vulnérabilités identifiées. Maintenant, la plupart des hébergeurs et les versions récentes de WordPress bloqueront un scan comme celui-ci par défaut. Donc, le plus probable est que cela ne va fonctionner qu’avec des versions obsolètes de WordPress sans aucune protection d’un hébergeur.
Ok, jusqu’ici tout va bien. Maintenant, nous pouvons vérifier cela en vérifiant si la page de connexion existe en naviguant vers l’URL du site web + /wp-admin comme ceci:
Et bien sûr, le masque de connexion apparaît.
Étape 2 – Attraper le code avec Burpsuite
Vient maintenant la partie difficile, trouver le nom d’utilisateur. Vous pourriez commencer par admin, mais WordPress génère généralement un nom d’utilisateur aléatoire, donc il pourrait être difficile à déterminer et vous pourriez avoir besoin de faire des recherches supplémentaires sur la cible.
Dans l’exemple de Mr. Robot, je sais que le nom d’utilisateur est Elliot (pas trop difficile à deviner). Vous pourriez aussi essayer d’exécuter hydra contre quelques listes de noms d’utilisateur, mais d’abord, nous devons utiliser burpsuite pour récupérer du code de la page de connexion.
Démarrez burpsuite en tapant
sudo burpsuite
Créez un nouveau projet temporaire en utilisant les valeurs par défaut de Burp.
Naviguez vers l’onglet Target -> Scope et cliquez sur Add pour inclure la page wp-login au scope. Sélectionnez Oui dans la boîte de dialogue contextuelle.
Puis, allez dans le menu Préférences de Firefox et faites défiler tout en bas jusqu’à trouver Proxy réseau. Cliquez sur Paramètres.
Sélectionnez Configuration manuelle du proxy et entrez l’IP 127.0.0.1 et le port 8080. Cochez « Utiliser ce serveur proxy pour tous les protocoles ». Cliquez sur OK.
Retour à Burpsuite. Ouvrez l’onglet Proxy. Retournez maintenant à la page WP-Login. Entrez n’importe quel nom d’utilisateur et mot de passe aléatoire et cliquez sur Connexion. Assurez-vous que Privacy Badger, uBlock Origins et NoScript sont désactivés pour le site.
Une fois que vous avez cliqué sur connexion, retournez à Burpsuite et regardez la sortie.
log=root&pwd=1234&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.1.109%2Fwp-admin%2F&testcookie=1
Maintenant nous avons quelque chose que nous pouvons alimenter à Hydra.
Étape 3 – Trouver le bon nom d’utilisateur
Donnons-nous un peu de plaisir pour vous donner une idée de la façon dont vous pourriez trouver un nom d’utilisateur pour votre cible. La VM que nous utilisons pour cet exemple, comme mentionné ci-dessus, a pour thème Mr. Robot. Donc, il est très probable que le nom d’utilisateur sera trouvé dans un certain trivia qui a à voir avec Mr. Robot.
Retournez d’abord à votre Burpsuite et fermez-la. Nous n’en avons plus besoin pour l’instant. Retournez également dans vos paramètres Proxy et désactivez à nouveau le Proxy.
Maintenant, je me dirige vers la page Wikipedia de Mr. Robot : https://en.wikipedia.org/wiki/Mr._Robot
Et je vais créer une liste de noms d’utilisateurs à partir de cette page exacte en utilisant CeWL.
Ouvrir une nouvelle fenêtre de terminal et taper
sudo cewl -w usernames.txt -d1 -m4 https://en.wikipedia.org/wiki/Mr._Robot
Décomposons cela.
- -w usernames.txt – devrait être assez clair, c’est le nom de la liste de mots qui sera créée
- -d1 – Définit la profondeur dans laquelle CeWL va crawler le site web. 1 indique qu’il restera sur ce site exact et n’ouvrira aucun lien sur celui-ci.
- -m4 – Définit la longueur minimale du mot qui sera mis dans la liste
- https://en.wikipedia.org/wiki/Mr._Robot – évidemment le site web que nous allons crawler.
Donc comme vous le voyez, vous pourriez appliquer cette technique à n’importe quel site web pertinent cible.
Lancer un rapide
ls
nous montre, que notre nom d’utilisateur.txt a été créé.
Dans certains cas, vous avez de la chance en utilisant wpscan pour énumérer le nom d’utilisateur, alors essayez toujours cela aussi:
wpscan --url http://www.targetwebsite.com --enumerate u
Maintenant, nous allons utiliser Hydra pour Bruteforcer cette liste contre la page wp-login.
Étape 4 – Bruteforcer les noms d’utilisateurs avec Hydra
Alright, il est temps de nourrir les noms d’utilisateurs à notre Hydra. J’ai trouvé cette méthode particulière sur l’un des nombreux Walkthroughs de Vulnhub, bien que ne me souviens pas exactement lequel c’était, mais je donne le crédit où le crédit est dû. Ouvrez une nouvelle fenêtre de terminal et tapez :
hydra -V -L usernames.txt -p whatever 192.168.1.109 http-post-form '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log:F=Invalid username'
Décomposons cela.
- -V – Verbose
- -L – Nos noms d’utilisateurs.txt list
- -p whatever – Le mot de passe, on s’en fiche, car on veut trouver le nom d’utilisateur
- http-post-form – Le type d’attaque par force brute que nous voulons exécuter
- /wp-login.php – Le chemin vers le formulaire de connexion
- log = ^USER^&pwd=^PASS^&wp-submit=Log+In – Les valeurs qui seront envoyées au formulaire, où ^USER^ et ^PASS^ sont des caractères de substitution pour nos options -L et -p
- F=Nom d’utilisateur invalide – Indique à hydra que la tentative a échoué si elle renvoie Nom d’utilisateur invalide
Alors, exécutons cette commande, d’accord ?
Et bien sûr, on nous renvoie que la connexion avec le nom d’utilisateur elliot a réussi (Ce qui n’était pas le cas, cela a juste confirmé que le formulaire web n’a pas retourné un nom d’utilisateur invalide).
Donc nous devons encore trouver le mot de passe. Mais au moins, nous avons un nom d’utilisateur.
Étape 5 – Brute Forcer le mot de passe
Maintenant, nous pourrions également utiliser Hydra pour Brute Forcer le mot de passe de l’utilisateur, mais je préfère utiliser wpscan car la syntaxe est plus facile.
wpscan --url http://192.168.1.109/wp-login.php --passwords /usr/share/wordlists/rockyou.txt.gz --usernames elliot --wp-content-dir http://192.168.1.109/wp-login.php
rockyou.txt.gz est juste un exemple, remplacez avec la liste de mots de passe que vous voulez utiliser.
Et voilà, nous avons le nom d’utilisateur et le mot de passe.
Étape 6 – Mise en œuvre du code malveillant dans WordPress
Alright, maintenant que nous avons obtenu l’accès administrateur à WordPress, il y a plusieurs façons de procéder à partir d’ici. Je vais vous montrer l’une des plus faciles.
Sur votre ordinateur attaquant, allez dans Places -> File System -> usr -> share -> webshells -> php et ouvrez php-reverse-shell.php
Copiez tout son contenu:
Maintenant dans WordPress, naviguez dans Apparence -> Éditeur et sélectionnez le modèle 404.php. Ce n’est qu’un exemple, vous pouvez mettre en œuvre le code de nombreuses façons différentes.
Maintenant, collez votre code ici pour qu’il ressemble à quelque chose comme ceci:
Modifiez les lignes marquées en jaune pour que l’IP pointe vers votre ordinateur attaquant et choisissez un port.
Étape 7 – Démarrage d’un écouteur Netcat
Maintenant de retour sur l’ordinateur attaquant, nous démarrons un écouteur Netcat :
nc -lvp 443
Puis vous allez ouvrir la page 404 comme en allant simplement sur le lien : www.yourtargetwebsite.com/404
Et nous y sommes ! Non seulement nous avons piraté le compte d’administration de WordPress, mais nous avons également eu accès au serveur lui-même. À partir de là, vous devez utiliser vos compétences pour obtenir un accès élevé, mais cela ne devrait plus être trop difficile maintenant.
Vous pouvez voir, les CTF sont un excellent moyen d’apprendre de nouvelles choses.
Jusqu’à la prochaine fois, continuez à pirater!
*Toutes les techniques fournies dans les tutoriels sur ceos3c.com sont uniquement destinées à des fins éducatives.
Toutes les techniques enseignées ici sont uniquement destinées à être utilisées dans un environnement de laboratoire fermé ou en consentement avec une seconde partie.
Si vous utilisez l’une de ces techniques à des fins illégales, Ceos3c ne peut être tenu responsable des éventuelles conséquences légales.