Aujourd’hui je m’attaque à la machine Friendzone, classé facile sur HTB.
Après une énumération de port, j’obtiens ceci.
le port 21 ftp, 22 ssh, 53 dns, 80 http, 139 et 445 pour smb, 443 pour https.
Le port 21 ne nous apporte rien car impossible de s’y connecter.
Le port 80 nous amène à un site. nous voyons une adresse mail avec un nom de domaine: friendzoneportal.red
Une recherche de dossier et fichier ne nous amène rien d’intéressant.
Le port SMB lui nous amène quelques informations pertinentes.
Je peux lister les dossiers accessibles et deux sont accessibles, un en lecture et un en lecture/écriture en étant un anonyme.
On voit aussi que le dossier Files a pour chemin sur la machine /etc/files. Ce qui nous servira plus tard.
En se connectant sur le dossier /général, je peux récupérer un fichier creds.txt qui contient un identifiant et un mot de passe pour une partie administrateur que nous ne connaissons pas encore.
Puisque sur le site en port 80, j’ai trouvé un nom de domaine et qu’il y a un serveur DNS sur la machine, interrogeons celui ci pour avoir des informations.
Celui ci m’indique plusieurs choses, nous avons des sous domaines qui sont administrator1.friendzone.red, hr.friendzone.red, uploads.friendzone.red.
Je les ajoute au fichier /etc/hosts.
En se rendant sur le site administrator1.friendzone.red, je tombe sur une page de login, nous avons trouvé les accès sur le smb /general.
La page dashboard nous indique que certains paramètres sont manquant. Le pagename est intéressant car comme le fichier est en php, on s’attend à ce que timestamp soit aussi en php et que la page dashboard ajoute le format .php.
Je peux sûrement faire une inclusion de fichier pour avoir accès à la machine. Pour cela, je vais utiliser le dossier ou j’ai des droits d’écriture sur le dossier smb /Development. Comme le dossier du dessus a comme chemin /etc/files, je peux deviner facilement le chemin du dossier /Development.
Je créé un fichier shell.php avec un payload pour me connecter à la machine. Je l’upload sur la machine via smb.
Je lance un listener. et je lance la commande via le lfi pour qu’il lance la commande php.
Et voilà, nous avons accès à la machine.
Après une petite énumération, je vois un dossier friend dans le dossier /home, et je peux lire le premier flag malgré mes droits non élevés.
Etant www-data, il faut que j’augmente mes droits, une recherche dans les fichiers du serveur web me montre le mot de passe de l’utilisateur friend.
Une fois connecté à celui ci, j’ai utilisé le script linpeas.sh, sans succès. J’ai donc décidé d’utiliser le script pspy pour voir les process.
Je vois qu’un script python est lancé à interval régulier.
Il m’est impossible de le modifier. Par contre une recherche sur le fichier os.py qui est importé par le script m’indique qu’un des fichiers est modifiable. J’ajoute à la fin de celui ci un payload. Et je lance un listener. Et voilà, je suis root.