Labo 7 - Web Security

Labo 7 - Web Security

Informations Générales

Dans ce labo, nous vous donnons accès à un site web dont nous vous demandons d’exploiter les vulnérabilités. Il s’agit d’une webapp de chat privé en temps réel très basique, baptisée ChatsApp.

Connection au service

Ce service est hébergé avec Infomaniak et sans nom de domaine assigné. Il est donc normal de ne pouvoir s’y connecter que par HTTP.

Vous devez avoir reçu par mail deux identifiants personnels pour vous connecter à ChatsApp. Ils correspondent aux deux parties de ce labo.

Objectifs

Ce labo est divisé en 2 phases. La première consiste à trouver 6 flags cachés dans ChatsApp. La seconde vous demandera de corriger les vulnérabilités que vous aurez exploitées dans la première phase.

Capture the flags

Chaque flag est une chaine de caractères commençant par flag<i>:, où <i> est le numéro du flag, et suivi d’une valeur aléatoire en hexadécimal de 16 charactères.

La phase de capture the flags est divisée sur deux versions différentes de ChatsApp, chacune ayant 3 flags à trouver.

Version 1

Pour vous conecter à la première version, vous utiliserez le premier identifiant que vous avez reçu, et vous aurez 3 flags à trouver.

En effet, (des parodies de) Elon Musk et Donald Trump ont commencé à utiliser ChatsApp pour discuter entre eux, et vous savez de source sure que Trump est pret à partager les Gold Codes avec Elon. Ceux-ci sont divisés on trois parties, qui correspondent aux trois flags.

Version 2

À la suite de vos échanges avec (la parodie de) Elon, celui-ci, qui a racheté le projet, a fait mettre en place une seconde version de ChatsApp, qui comble les failles que vous avez exploitées sur la première version. Vous pouvez y accéder en vous déconnectant de la première version, et en vous reconnectant avec le second identifiant que vous avez reçu. Il vous reste 3 flags à trouver dans cette partie.

Cette nouvelle version, implémentée rapidement pour satisfaire ses demandes, introduit également quelques nouvelles fonctionnalités.

La première permet de modifier votre nom d’utilisateur public, c’est à dire ce qui sera affiché dans la liste des conversations des gens qui ont une conversation avec vous, sur la gauche de l’écran. Cette fois-ci, les ingénieurs de ChatsApp ont fait attention de bien “escape” votre input.

Une autre nouveauté est un timeur coté client qui, au bout de 10 minutes d’inactivité, vous déconnecte de votre compte, dans un soucis de sécurité.

Enfin, des changements ont été faits en interne au niveau de la gestion des erreurs, avec notamment des réponses mieux uniformisées de la part du serveur en cas d’erreur.

Notez également que les ingénieurs de ChatsApp, ayant appris leur leçon sur l’importance d’une implémentation sécurisée, ont fait attention à ce que les messages d’erreur en cas de problème de login sont tous les mêmes, afin de ne divulguer aucune information (comme par exemple le fait qu’un utilisateur est déjà inscrit)

Liste de pseudonymes potentiellement inscrits sur ChatsApp

Notez que ce dernier flag n’est pas personnalisé pour chaque étudiant•e. Nous vous demandons donc d’être praticulièrement protecteur•ice de celui-ci.

Dans cette partie, l’obtention des flags demandera bien entendu d’exploiter des vulnérabilités introduites par ces nouvelles fonctionnalités. Nous insistons donc sur le fait de bien les analyser. Par exemple, comment et où est utilisé le nom d’utilisateur personnalisé, comment fonctionne ce timer, et à quoi ressemblent ces messages d’erreur.

Correction des vulnérabilités

ChatsApp a été implémenté rapidement et sans grande considération pour les aspects de sécurité. Nous vous demandons de modifier le code de ChatsApp afin de

Détails techniques

Afin de garantir que le système soit toujours fonctionnel, nous avons mis en place les mesures suviantes :

Rendu

Pour le rendu de ce labo, nous vous demandons les données suivantes. Comme c'est par groupe de deux, merci de spécifier quel profil vous avez utilisé pour trouver les flags.

Flags

Nous vous demandons de nous fournir les 6 flags. Pour chaque flag, précisez aussi les démarches vous ayant permi leur obtention (par exemple, l’input fourni s’il s’agit d’une attaque XSS).

Ceci est à fournir dans votre Readme dans la section indiquée.

Exploit supplémentaire

Nous vous demandons aussi de nous fournir un lien vers ChatsApp qui, lorsque l’on clique dessus, exécutera alert(document.cookie) dans notre browser, que l’on soit actuellement connecté ou non à ChatsApp. (Dans un contexte réel, vous pourriez donc, au lieu d’afficher nos cookies, les envoyer avec fetch vers un serveur que vous contrôlez afin de les récupérer, sans même que nous ne nous en rendions compte)

Ceci est à fournir dans votre Readme dans la section indiquée.

Correction des vulnérabilités

Une version de ChatsApp vous est fournie dans le repo classroom de ce rendu. Il correspond à la version 2 que vous avez attaquée dans ce labo, mais sans le correctif de la vulnérabilité que vous avez utilisée dans la partie 1.

Nous vous demandons de modifier ce code afin de

Si vous effectuez d’autres modifications, merci de les lister dans votre readme dans la section indiquée.

Nous évaluerons cette partie en grande partie manuellement, en parcourant vos changements pour voir s’ils nous semblent cohérents, et en vérifiant que le service reste fonctionnel.