Salut à tous, gros soucis d’internet chez moi, ce qui m’a fait délaissé le blog.
Aujourd’hui je suis de retour pour un nouveau write-up sur la machine TheNoteBook. Cette machine est classée comme Medium sur le site HackTheBox.
1 – Scan de port
La machine ayant l’adresse IP 10.129.124.76, je lance un scan de port sur cette adresse IP.
3 ports sont ouverts sur cette machine. Le port SSH, le port HTTP et le port 10010 qui est filtré donc derrière un pare-feu.
En allant sur le site, la page d’accueil nous annonce que le site web est un site web qui nous permet d’écrire des notes. Pour cela il faut nous inscrire.
Je m’inscris donc sur le site.
Une fois inscrit, j’ai essayé de lancer quelques exploits comme les failles XSS ou autre. Sans succès.
En regardant les cookies du site, je tombe sur un cookie auth.
Ce cookie est un JWT, comprenez Json Web Token. Les JWT sont un moyen d’authentification sécurisé. Il existe néanmoins certaines vulnérabilités. En copiant collant le JWT sur le site officiel de JWT, nous le décodons et avons des informations sur ce token.
Dans un premier temps, nous voyons le header, qui explique le fonctionnement de ce token. Il utilise l’algorithme RS256. De plus il y a un lien vers le localhost de la machine. Le lien dirige vers un privKey.key
En dessous nous avons le payload avec des informations sur l’utilisateur. Mon pseudo, mon adresse email et surtout chose intéressante un admin_cap à 0. Je me dis que si on passe ce 0 à 1 j’obtiendrai peut être un accès à une partie administrateur sur le site.
Enfin nous avons la signature qui explique comment est créé le token. Je remarque que pour signer le token, il faut deux clés. Une clé privée et une clé publique.
En faisant une recherche sur google, je suis tombé sur un lien GitHub qui nous montre la marche à suivre pour créer des clés publiques et privées RS256
Je copie colle les clés sur le site jwt.io, je copie le jwt et colle le tout dans le cookie sur le site web et je remplace l’addresse dans le jwt par mon adresse mail pour que le site web puisse recupérer ma clé publique. Pour cela je demarre un serveur web avec python par exemple.
Et voilà, nous avons un onglet Admin Panel. En regardant les notes de l’administrateur, je vois que le site est programmé via le langage php. Je décide donc de créer un reverse shell avec un script.
Et voilà, nous avons un reverse shell.
2 – Escalade de privilège.
Sur notre shell, l’utilisateur est www-data, celui ci n’a pas beaucoup de droit. Je décide donc de chercher des informations sur les fichiers du serveur web ou du dossier /var.
Dans le dossier /var nous avons un dossier backups, et à l’intérieur de celui ci nous avons un fichier home.tar.gz.
Le dossier home sur linux contient les répertoires personnels des utilisateurs.
En le décompressant, je vois un dossier pour un utilisateur noah, qui existe sur l’ordinateur. A l’intérieur de ce dossier noah, nous avons une clé id_rsa.
Je copie cette clé sur ma machine et je me connecte sur le serveur avec l’utilisateur noah. Avec succès.
J’ai ainsi le flag user.txt qui permet de valider sur hackthebox de la réussite de la première étape. Il ne reste plus qu’à devenir root.
En faisant un sudo -l, je vois que le logiciel docker peut être lancé en sudo sans mot de passe.
En faisant une recherche sur google, je suis tombé sur ce GitHub expliquant la marche à suivre pour devenir root.
Je modifie le script pour avoir un nouveau reverse shell mais cette fois ci avec l’utilisateur root puisque le script sera lancé avec la commande sudo.
Et voilà nous sommes administrateur de la machine.