Catégories
CTF

Skynet

A vulnerable Terminator themed Linux machine.

A vulnerable Terminator themed Linux machine.

https://tryhackme.com/room/skynet

Phase d’énumération

Découverte des services et versions présents sur la machine grâce à Nmap:

Par réflexe, regardons ce que contient le serveur web :

Rien de spécial n’est évoqué à part le /admin
Le /admin n’est pas accessible

Voyons voir si le /squirrelmail qui contient pas mal de fichiers/dossiers est accessible:

Une page de connexion pour des mails

Continuons d’exploiter notre retour Nmap pour voir si d’autres services sont exploitables.

On voit donc aussi qu’il y a un service SMB sous Samba, qui est réputé vulnérable dans les CTFs donc je regarde ce que je peux trouver en l’énumérant.
Pour faire cela, je vais me servir de l’outil Enum4Linux :

On trouve l’utilisateur milesdyson
On voit aussi qu’un mode anonyme est disponible sur le partage de fichiers

Essayons donc de nous connecter en mode anonyme pour essayer de récupérer des informations.

Phase d’exploitation

Connexion réussie, voyons voir ce que ces fichiers nous cache

Nous avons pu récupérer un total de 3 fichiers sur notre machine attaquante, les voici :

Regardons ce qu’ils contiennent
On a un p’tit dictionnaire, espérons qu’il contient le mot de passe de Miles

Le premier flag de cette box sur TryHackMe est le mot de passe du compte mail de Miles, espérons qu’il se trouve dans cette liste de mot de passe. Et pour vérifier cette information, nous pouvons utiliser l’outil Burp Suite afin de faire une attaque par dictionnaire sur son compte.

Le premier mot de passe a une longueur de réponse différente des autres mots de passe essayés par Burp Suite donc si on la tente :

Nous avons bien accès au mail!
Grâce à ça nous avons accès au nouveau mdp de Miles sur le SMB

Et voilà, nous avons accès au SMB client :

En pentest, notre but est de trouver le plus d’informations pertinentes possibles et un dossier peut nous sauter aux yeux car il a sa première lettre en minuscule et aussi car il s’appelle « notes », voyons ce qu’il contient:

Idem que pour la recherche du dossier précédemment, on peut voir le fichier « important.txt », récupérons-le.

Quand nous nous rendons sur la page http://10.10.47.254/45kra24zxs28v3yd/, nous retrouvons le blog personnel de Miles Dyson :

On peut essayer de réénumérer la page de Miles Dyson à l’aide de la commande « dirb » et en spécifiant le dossier à découvrir.

On voit qu’il y a un dossier « administrator » sur sa page personnelle.

On tombe sur un CMS, qui peut lui permettre d’administrer sa page, voyons si une vulnérabilité est exploitable sur cette page :

Une LFI est possible sur le CMS en question

Grâce à la commande searchsploit -m et le numéro de l’exploitation nous pouvons récupérer l’exploit :

Pour exploiter le site web, nous allons procéder à une attaque par RFI (Remote File Inclusion) comme suit :

  • Configuration du reverse shell PHP :
  • On établit le serveur python qui va accueillir le reverse shell :
  • On écoute maintenant sur le port 31337 pour recevoir les informations du reverse shell :
  • Exploitation de la RFI :
Grâce à cela, nous récupérons un accès sur la machine.

Comme d’habitude, lorsque nous arrivons sur une machine, j’aime bien appliquer la procédure pour avoir un full TTY de HackTricks :

python3 -c 'import pty; pty.spawn("/bin/bash")'
(inside the nc session) CTRL+Z;stty raw -echo; fg; ls; export SHELL=/bin/bash; export TERM=screen; stty rows 38 columns 116; reset;

Nous pouvons maintenant exploiter la machine pour faire une élévation de privilèges, mais avant cela, récupérons le flag user :

Elévation de privilèges

Pour avoir une élévation de privilèges, nous devons analyser les failles de la machine exploitée et pour cela, rien de mieux que l’utilisation du script linpeas.sh

Nous allons le récupérer sur la machine cible de la même manière que nous avons exploité le reverse shell sur le serveur web à savoir avec un server HTTP python :

Pour pouvoir ensuite copier le script sur le serveur, la plupart du temps nous avons les droits sur le dossier /tmp, essayons :

Nous avons récupéré le script, exécutons-le :

Tiens donc un job crontab exécuté par l’utilisateur root, pouvons nous le modifier pour l’exploiter?

Nous sommes en readonly, impossible de le modifier pour en profiter.

Bien évidemment, en tant que « hacker » nous allons trouver une manière détournée pour en profiter (c’est la définition même du hacking) puisque dans la commande, celle-ci établit un environnement bash avec les droits root, ce qui implique un accès en root si nous arrivons à l’exploiter. Comme la tâche s’exécute toutes les minutes, servons-en nous pour récupérer les accès.

Pour y parvenir nous allons devoir jouer avec le wildcard du script avec les commandes comme suit :

Dans le dossier « /home/milesdyson/backups » :

echo -e '#!/bin/bash\nchmod +s /bin/bash' > /var/www/html/root_shell.sh
touch "/var/www/html/--checkpoint-action=exec=sh root_shell.sh"

touch "/var/www/html/--checkpoint=1"
/bin/bash -p

On retrouve bien le # qui nous indique que nous avons récupérer les privilèges sur la machine, ce que nous pouvons vérifier avec la commande « id » ou « whoami » :

Nous sommes toujours sur le compte www-data mais dans un environnement root

Nous pouvons finalement récupérer le dernier flag, à savoir le compte root qui nous permet d’affirmer que nous avons les pleins pouvoirs sur la machine :

Et voilà, la box est terminée!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *