Tryhackme CTF Write-Up : Startup
Dans ce write-up, nous verrons comment compléter Startup de TryHackMe, Un challenge CTF de niveau débutant qui requiert plusieurs techniques : nmap, ftp, wireshark, elevation de privilèges
Enumération
Commençons par un scan Nmap pour voir les ports ouverts puis un second sur ceux ouverts pour voir les services qui tournent dessus ainsi que le script par défaut de nmap sur ces ports
Dans ce scan nous trouvons que trois ports sont ouverts :
21 : Un service ftp vsftpd 3.0.3
22 : Un service ssh OpenSSH 7.2p2
80 : Un serveur Apache httpd 2.4.18

Nous remarquons que le service ftp autorise les connexions anonymous et qu'ils y'a un dossier ftp où nous avons tous les droits, ainsi que deux fichiers

Nous les récupérons nous apprenons un nom d'utilisateur : Maya

Et pour l'image nous n'apprenons rien d'important à première vu

L'énumération de dossier donnera un /files
Nous y retrouvons le contenu du service ftp

Comme nous avons les droits d'écriture dans le dossier ftp, nous pouvons y glisser un reverse-shell

En effet nous avons pu transférer un shell, retournons sur le /files et configurons un listener sur le port du reverse shell

Il ne reste plus qu'à cliquer sur shell.php et à attendre la connexion

Voilà l'accès initial
Elevation de privilèges :
Nous trouvons dans le dossier incidents
une capture de packet, que je transfert sur wireshark, et en lisant en plain-text nous obtenons ceci

Apparement un mot de passe a été soumis pour www-data mais ne serait pas le bon, peut-être le mot de passe de lennie?
Après avoir upgrader notre shell avec python :
python -c 'import pty;pty.spawn("/bin/bash")'
nous pouvons tenter de nous connecter avec lennie

En effet, cela fonctionne et nous pouvons récupérer le premier flag
Nous voyons dans le dossier /home/lennie/scripts un fichier bash et un fichier txt, tout deux détenus par root

Apparement planner.sh fait appel à /etc/print.sh,
voyons le contenu de print.sh

Nous voyons que lennie possède print.sh, nous pouvons alors le modifier et y ajouter un reverse-shell,
En regardant startup_list.txt il s'actualise chaque minute, nous pouvons alors déduire que planner.sh se lance avec les permissions root toutes les minutes, et exécute print.sh qui nous appartient avec ces mêmes permissions root,
si nous ajoutons un reverse-shell à ce print.sh nous obtiendrons alors les permissions root lors de l'execution de planner.sh

et il ne reste plus qu'à attendre sur notre listener netcat :

Nous voilà root, nous pouvons récupérer le flag root :)
J'espère que vous aurez appris quelque chose et apprécié mon write-up
N'hésitez pas à faire la room sur tryhackme : https://tryhackme.com/room/startup
mon profil tryhackme : https://tryhackme.com/p/Frozzinours
Last updated