Projet CTFD

GitLab Voir sur GitLab Link to the project

Contexte

L'association Yggame, active dans l'organisation d'événements, souhaitait étendre ses activités avec un événement dédié à la cybersécurité. Cet événement, un Capture The Flag (CTF), visait à proposer une série de défis techniques permettant aux participants de tester et d'approfondir leurs compétences en sécurité informatique. Notre équipe de quatre étudiants avait pour mission de concevoir une plateforme complète pour gérer cet événement et d'élaborer une série de défis variés et stimulants.

En tant que Product Owner, j'étais chargé de m'assurer que les attentes du client étaient bien comprises et intégrées dans le développement du projet. Mon rôle consistait à coordonner l'équipe, prioriser les tâches, et garantir que les livrables répondaient aux besoins fonctionnels et techniques de l'association.

Apercu CTFd

Déroulement du projet

Pour répondre aux besoins de l'association, nous avons choisi d'utiliser la plateforme CTFd, une solution open-source conçue pour les événements CTF. Cette plateforme a été personnalisée en fonction des attentes spécifiques du client et déployée sur un serveur VPS en utilisant une infrastructure basée sur Docker. Cette conteneurisation nous a permis de créer un environnement modulaire et flexible, où chaque défi nécessitant un hébergement pouvait être isolé dans son propre conteneur. J'ai également développé une interface pour gérer ces conteneurs de manière intuitive.

La gestion des défis s'appuyait sur une base de données MySQL, associée à l'outil phpMyAdmin pour une administration simplifiée. En parallèle, nous avons travaillé en méthode agile, organisant nos tâches et nos sprints via GitLab, qui a servi à la fois de plateforme de gestion de projet et de versionnement.

Création des défis techniques

Une part essentielle du projet consistait à développer des défis variés, couvrant plusieurs domaines de la cybersécurité, pour enrichir l'expérience des participants. Parmi ceux que j'ai réalisés :

  • Défis PHP
    • Un exercice sur les injections SQL pour sensibiliser aux risques liés aux requêtes non sécurisées.
    • Un défi explorant la sécurité des cookies, avec manipulation et contournement d'un mécanisme d'authentification en PHP.
  • Questionnaire RGPD
    • Un défi interactif basé sur un faux texte de politique de confidentialité, où des scripts JavaScript empêchent la copie du texte ou l'accès à l'inspecteur d'élément.
  • CMS Drupal
    • Un défi exploitant une API JSON exposée pour chercher des informations dans une page de type article, sans authentification.
  • Stéganographie
    • Un défi utilisant les métadonnées d'une image pour dissimuler des informations d'identification.
    • Un défi avancé de manipulation de chunks PNG avec des données compressées en format zTXT.

Compétences et Apprentissages

Ce projet m'a permis d'approfondir mes connaissances techniques, notamment en gestion d'infrastructure avec Docker et en déploiement de solutions sur un serveur VPS. J'ai également acquis une expérience pratique dans le développement et l'intégration de défis en cybersécurité, en explorant des domaines variés comme la sécurité web, les bases de données, et les systèmes.

En tant que Product Owner, j'ai appris à traduire les besoins d'un client en spécifications claires et réalisables. Cette expérience m'a également permis de perfectionner mes compétences en gestion d'équipe et en communication, en m'appuyant sur des outils comme GitLab pour structurer et suivre les progrès du projet.

Conclusion

Ce projet a été une expérience formatrice qui m'a permis de travailler sur une application concrète et utile, tout en répondant aux besoins d'un véritable client. Les retours positifs de l'association Yggame ont validé nos choix techniques et organisationnels, et cette réussite a renforcé ma motivation à poursuivre mes efforts dans le domaine de la cybersécurité et du développement de solutions adaptées aux problématiques réelles.

← Projet Précédent Projet Suivant →
Back to top