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
Last updated
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
Last updated
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 :
mon profil tryhackme :