đź“— HackTheBox - Shoppy
Table of contents
Note
Il s’agit d’un des premiers write-ups que j’ai Ă©crit de ma vie, j’ai attendu que la machine retire avant de le poster. C’est possible que je n’utilise pas les bons termes Ă certains endroit, je n’ai pas relu tout le write-up pour me corriger (j’ai bien trop la flemme).
Vous allez aussi pouvoir voir Ă quoi ressemblait mon mAgn
iFiQuE Ubuntu Ă cette Ă©poque (pas si lointaine)
Recon
On arrive sur une page vide, avec un timer de 349 jours, et un message “Shoppy beta coming soon ! Stay tuned for beta access !”
Il s’agit donc d’une application qui n’est pas encore dĂ©ployĂ©e, on peut s’attendre Ă un docker ou quelque chose du type
On lance un dirbuster pour essayer de trouver des directories sur le site, et un wfuzz pour les sous domaines
Le dirbuster nous donne http://shoppy.htb/admin
et http://shoppy.htb/login
Le wfuzz nous donne http://mattermost.shoppy.htb
Foothold
On commence par aller voir le /login, c’est un form de connection classique avec un input et un username
On peut tenter une injection SQL: username=admin' or1=1--
et password=admin
La requĂŞte prend beaucoup de temps, puis le serveur me renvoie un gateway timeout…
On tente cette fois une injection NoSQL: username=admin'||'1==1
& password=admin
Et….. on est connectĂ©s en tant qu’admin
On est redirigĂ©s sur le /admin, qui est… vide
Il y a quand mĂŞme un bouton Search for users, qui redirige vers /admin/search-users
On a juste un input, en partant du principe que c’est le mĂŞme backend qui gère ça aussi, j’entre la mĂŞme injection NoSQL que pour le login, qui renverra True
, soit tout les utilisateurs
J’entre donc a'||'1==1
dans l’input, et j’appuie sur le bouton Download export qui apparaĂ®t
On voit deux utilisateurs: admin
et josh
On a aussi les deux hash de leurs mot de passe, en md5
Qui dit hash, dit hashcat, on prend le hash de josh, et on lance hashcat avec le hash 6ebcea65320589ca4f2f1ce039975995
et rockyou en wordlist
On a maintenant le mot de passe de josh
Note: Je suis allĂ© me connecter au /admin avec ses logins, ça a fonctionnĂ© mais il avait le mĂŞme panel que l’utilisateur admin
Je vais sur le mattermost pour me connecter avec le compte de josh
En se balandant un peu sur le mattermost, on trouve un channel privĂ© “deploy machine”, dans lequel on trouve des identifiants, probabelement pour se connecter au ssh de la machine
Lateral Move
ssh jaeger@10.10.11.180
On est connectés au SSH, on cat user.txt
pour flag le user
On fait un sudo -l
pour voir si on a des accès particuliers
On voit qu’on peut Ă©xĂ©cuter password-manager en tant que deploy sur la machine, on va d’abord aller voir ce qu’il y a dans ce dernier
cat /home/deploy/password-manager
C’est très peu lisible puisqu’il s’agit d’un ELF mais on voit, sur la ligne au milieu du screen, que si on entre Sample quand il demande le password, il nous autorise l’accès
On va donc lancer password-manager en tant que deploy puis entrer le mot de passe
sudo -u deploy /home/deploy/password-manager
On a les identifiants de l’user deploy, on va s’y connecter
Privilege Escalation
Une fois connecté, on voit, en faisant id
que deploy est dans le groupe docker
On va donc partir sur une docker escape, qu’on rĂ©cupère sur GTFObins:
docker run -v /:/mnt --rm -it alpine chroot /mnt sh