Salut tout le monde, aujourd’hui je me suis attaqué à la nouvelle machine HTB intitulé Forge, classé medium.
Reconnaissance
Après avoir lancé nmap, nous voyons 2 ports d’ouvert.
Le port 22 (ssh) et le port 80 (http).
En allant sur le site web en port 80, il y a une redirection vers forge.htb. Ajoutons cela à notre etc/hosts
Une fois chose faite, nous avons accès à un site web avec une page d’accueil avec différentes images. Un lien en haut nous indique la possibilité d’upload un fichier sur le site.
Après plusieurs essais d’envoi de fichier reverse shell en php sans succès. J’ai décidé de regarder si il y avait des dossiers et fichiers cachés via gobuster. Sans succès également. J’ai alors fait une découverte de vhost toujours avec gobuster et là bingo. J’ai découvert un admin.forge.htb.
En l’ajoutant et en y accédant, je note que malheureusement nous n’avons pas le droit avec notre IP d’y accéder, seul le localhost peut y accéder.
En regardant de plus près, nous avons la possibilité d’upload un fichier via une url, essayons de mettre l’adresse admin.forge.htb. Sans succès. Je me suis dis essayons de mettre l’adresse en majuscule et là bingo. En accédant au lien créé par le site, il est impossible via le navigateur d’avoir accès à la page. Par contre via curl, oui 🙂
Nous voyons ainsi la page d’accueil de la page administration. A l’intérieur de cette page HTML, il y a un lien vers une page announcements. Nous faisons de même pour pouvoir la lire.
Nous voyons à l’intérieur de celle ci les Credentials pour un serveur ftp. De plus il nous ai dit que nous pouvons utiliser la page /upload avec le paramètre u pour faire des requêtes. Nous forgeons une requête qui nous permettra de nous connecter au ftp. Nous voyons qu’ainsi nous avons accès au home de user. Comme il existe un serveur ssh, nous essayons de voir si il existe une clé id_rsa. Bingo. Grâce à cela nous avons accès au ssh de user et avons le premier flag.
Escalation de privilège
Nous avons donc accès à un utilisateur appelé user.
Nous voulons devenir root, qui a tout les droits sur la machine.
Pour cela nous allons devoir énumérer pour voir comment parvenir à une escalation.
En faisant un sudo -l, nous voyons que user peut lancer un programme en sudo sans mot de passe.
En regardant le code de plus près, nous voyons que lorsqu’il reçoit une erreur celui ci lance un debugger. Qui nous permettra de lancer une commande nous permettant d’avoir un accès root.
Nous lançons une deuxième session en ssh pour pouvoir nous connecter au localhost comme le logiciel lance le programme sur le localhost. Nous faisons planter volontairement le logiciel et bingo.