Aller au contenu principal

CTF « L'audit du club »

Lundi 21 septembre, fin de journée. La présidente du Club ÉtoileSport apprend qu'une stagiaire de la communication a consulté un dossier qu'elle n'aurait jamais dû voir. Elle vous confie un audit rapide du drive partagé et du serveur du club.

info

Ce défi est un CTF (Capture The Flag) : il n'y a pas d'étapes guidées. Vous cherchez, vous trouvez un flag (un mot caché), puis vous le saisissez dans l'application Joligo, dans l'activité « L'audit du club ». Le club, la stagiaire, le drive et les fichiers sont fictifs.

attention

Un audit réel s'effectue avec l'autorisation écrite du responsable des systèmes, et les journaux d'accès sont des données personnelles : ne les diffusez jamais en dehors de l'audit.

Petite vérification​

Avant de commencer, vérifiez si vous savez encore réaliser ces 3 actions très simples, sur la séance consacrée au moindre privilège :

  1. énoncer le principe du moindre privilège en une phrase
  2. expliquer pourquoi une stagiaire de la communication ne doit pas accéder au dossier des adhérents
  3. expliquer ce qui se passe quand on ajoute une personne au dossier racine d'un drive plutôt qu'à un seul sous-dossier
📌 Réponse attendue

Votre mission​

Vous êtes l'administrateur du club. Le script produit trois fichiers : droits_drive.csv (qui a quel droit sur quel dossier), journal_acces.log (les accès de la journée) et mises_a_jour.txt (la liste des mises à jour en attente du serveur).

Trouvez ce que la stagiaire a lu sans y avoir droit, retrouvez dans le journal le fichier concerné (son nom contient un code), puis hiérarchisez les mises à jour du serveur.

Le matériel​

Chaque participant reçoit un flag personnel : inutile de comparer avec vos voisins, le vôtre ne marcherait pas chez eux. Dans l'application Joligo, ouvrez l'onglet Profil et relevez votre code personnel (8 caractères, carte « Mon code personnel (défis CTF) »).

Dans votre VM Debian (remplacez a1b2c3d4 par votre code) :

sudo apt install openssl
mkdir -p ~/ctf-audit
cd ~/ctf-audit
CODE=a1b2c3d4
attention

Le script ci-dessous fabrique les trois fichiers de l'audit (c'est le travail du « méchant » de l'histoire). Ne le décodez pas pour le lire : ce serait lire la solution avant d'avoir cherché. Analysez les fichiers produits.

base64 -d <<'EOF' | bash -s -- "$CODE"
Q09ERT0iJDEiCmlmIFsgLXogIiRDT0RFIiBdOyB0aGVuIGVjaG8gIlVzYWdlIDogYmFzaCAtcyAt
LSBWT1RSRV9DT0RFIiA+JjI7IGV4aXQgMTsgZmkKS0VZPSIzNWE4YWQ1NzlhNWU1NmMwYWY5YiIK
RkxBRz0kKHByaW50ZiAlcyAiJENPREUiIHwgb3BlbnNzbCBkZ3N0IC1zaGEyNTYgLWhtYWMgIiRL
RVkiIC1yIHwgY3V0IC1jMS0xMikKY2F0ID4gZHJvaXRzX2RyaXZlLmNzdiA8PCdGSU4nCmRvc3Np
ZXIsdXRpbGlzYXRldXIsZHJvaXQsb3JpZ2luZQovLHN0YWdpYWlyZSxsZWN0dXJlK2Vjcml0dXJl
LGRpcmVjdAovQ29tbXVuaWNhdGlvbixyZXNwb25zYWJsZV9jb20sbGVjdHVyZStlY3JpdHVyZSxk
aXJlY3QKL0NvbXB0YWJpbGl0ZSx0cmVzb3JpZXIsbGVjdHVyZStlY3JpdHVyZSxkaXJlY3QKL0Fk
aGVyZW50cyxwcmVzaWRlbnRlLGxlY3R1cmUsZGlyZWN0Ci9EaXJlY3Rpb24scHJlc2lkZW50ZSxs
ZWN0dXJlK2Vjcml0dXJlLGRpcmVjdAovRGlyZWN0aW9uLHRyZXNvcmllcixsZWN0dXJlLGRpcmVj
dApGSU4KY2F0ID4gam91cm5hbF9hY2Nlcy5sb2cgPDxGSU4KMjAyNi0wOS0yMSAwODo1NTowMiBw
cmVzaWRlbnRlIGxlY3R1cmUgRGlyZWN0aW9uL2NvbXB0ZV9yZW5kdV9idXJlYXUuZG9jeAoyMDI2
LTA5LTIxIDA5OjAzOjQwIHJlc3BvbnNhYmxlX2NvbSBlY3JpdHVyZSBDb21tdW5pY2F0aW9uL2Fm
ZmljaGVfdG91cm5vaS5wbmcKMjAyNi0wOS0yMSAwOToxMjoxOCBzdGFnaWFpcmUgbGVjdHVyZSBD
b21tdW5pY2F0aW9uL3BsYW5uaW5nX3Jlc2VhdXgueGxzeAoyMDI2LTA5LTIxIDA5OjEyOjUxIHN0
YWdpYWlyZSBlY3JpdHVyZSBDb21tdW5pY2F0aW9uL3Bvc3RfaW5zdGFncmFtLmRvY3gKMjAyNi0w
OS0yMSAwOTo0MDowNyB0cmVzb3JpZXIgZWNyaXR1cmUgQ29tcHRhYmlsaXRlL2NvdGlzYXRpb25z
XzIwMjYueGxzeAoyMDI2LTA5LTIxIDEwOjE1OjMzIHByZXNpZGVudGUgbGVjdHVyZSBBZGhlcmVu
dHMvbGlzdGVfYWRoZXJlbnRzLnhsc3gKMjAyNi0wOS0yMSAxMDo0ODowOSBzdGFnaWFpcmUgbGVj
dHVyZSBDb21tdW5pY2F0aW9uL3Bob3Rvc190b3Vybm9pLnppcAoyMDI2LTA5LTIxIDExOjIwOjQ0
IHRyZXNvcmllciBsZWN0dXJlIERpcmVjdGlvbi9idWRnZXRfcHJldmlzaW9ubmVsLmRvY3gKMjAy
Ni0wOS0yMSAxMzozNToyMCByZXNwb25zYWJsZV9jb20gZWNyaXR1cmUgQ29tbXVuaWNhdGlvbi9u
ZXdzbGV0dGVyX29jdG9icmUuZG9jeAoyMDI2LTA5LTIxIDE0OjAzOjUxIHN0YWdpYWlyZSBsZWN0
dXJlIEFkaGVyZW50cy9DZXJ0aWZpY2F0cy9leHBvcnRfbGljZW5jaWVzXyR7RkxBR30uY3N2CjIw
MjYtMDktMjEgMTQ6MDQ6MTIgc3RhZ2lhaXJlIGxlY3R1cmUgQ29tcHRhYmlsaXRlL2ZhY3R1cmVz
XzIwMjYueGxzeAoyMDI2LTA5LTIxIDE0OjMxOjA5IHByZXNpZGVudGUgZWNyaXR1cmUgRGlyZWN0
aW9uL2RlY2lzaW9uc19idXJlYXUuZG9jeAoyMDI2LTA5LTIxIDE1OjAyOjQ3IHRyZXNvcmllciBl
Y3JpdHVyZSBDb21wdGFiaWxpdGUvcmFwcHJvY2hlbWVudF9iYW5jYWlyZS54bHN4CjIwMjYtMDkt
MjEgMTY6MTg6MzAgc3RhZ2lhaXJlIGVjcml0dXJlIENvbW11bmljYXRpb24vcG9zdF9mYWNlYm9v
ay5kb2N4CkZJTgpjYXQgPiBtaXNlc19hX2pvdXIudHh0IDw8J0ZJTicKTGlzdGluZy4uLiBEb25l
CmxpbnV4LWltYWdlLWFtZDY0L3N0YWJsZS1zZWN1cml0eSA2LjEuMTUzLTEgYW1kNjQgW3VwZ3Jh
ZGFibGUgZnJvbTogNi4xLjUyLTFdCm9wZW5zc2wvc3RhYmxlLXNlY3VyaXR5IDMuMC4xNy0xfmRl
YjEydTMgYW1kNjQgW3VwZ3JhZGFibGUgZnJvbTogMy4wLjExLTF+ZGViMTJ1Ml0Kc3Vkby9zdGFi
bGUtc2VjdXJpdHkgMS45LjEzcDMtMStkZWIxMnUyIGFtZDY0IFt1cGdyYWRhYmxlIGZyb206IDEu
OS4xM3AzLTErZGViMTJ1MV0KaHRvcC9zdGFibGUgMy4yLjItMiBhbWQ2NCBbdXBncmFkYWJsZSBm
cm9tOiAzLjIuMS0xXQp0cmVlL3N0YWJsZSAyLjEuMC0xIGFtZDY0IFt1cGdyYWRhYmxlIGZyb206
IDIuMC40LTFdCnZpbS9zdGFibGUgMjo5LjAuMTM3OC0yIGFtZDY0IFt1cGdyYWRhYmxlIGZyb206
IDI6OS4wLjEzNzgtMV0KRklOCmVjaG8gIkZpY2hpZXJzIGNyw6nDqXMgOiBkcm9pdHNfZHJpdmUu
Y3N2LCBqb3VybmFsX2FjY2VzLmxvZyBldCBtaXNlc19hX2pvdXIudHh0Igo=
EOF

Vous obtenez les fichiers droits_drive.csv, journal_acces.log et mises_a_jour.txt.

Comment jouer​

  1. Lisez les fichiers avec cat, grep et column -s, -t. Croisez les droits configurés avec ce que le journal montre réellement.
  2. Répondez aux questions de l'activité Joligo « L'audit du club » : certaines portent sur le flag, d'autres sur la démarche et les bons réflexes.
  3. Le flag est le code que porte le nom du fichier des adhérents lu par la stagiaire (export_licencies_<code>.csv) : il contient 12 caractères (lettres a à f et chiffres). Dans Joligo, vous saisirez seulement ces 12 caractères.
Besoin d'un coup de pouce ?

Cette démarche a été vue dans les séances Moindre privilège et Mise à jour d'un serveur Linux. Le cadre vient de la séance Charte informatique. grep stagiaire journal_acces.log affiche tout ce que la stagiaire a fait ce jour-là. Un mauvais flag fait perdre une vie dans Joligo : réfléchissez avant de tenter au hasard, comme pour un vrai mot de passe.