Aller au contenu

Challenge 1 - Blog Arcade

Difficulté : Facile


Contexte

Un blog dédié aux jeux d'arcade rétro est devenu le théâtre d’une activité cybercriminelle suspecte. En apparence, ce site semble être un paradis pour les amateurs de nostalgie vidéoludique, mais en y regardant de plus près, on découvre des failles critiques. Le blog est mal conçu, et les développeurs ont laissé des brèches exploitables mettant en danger la sécurité des données et du serveur.

Votre mission ? Identifier les failles, exploiter les vulnérabilités et découvrir les flags pour prouver vos découvertes.


Objectifs

Explorez le blog, analysez ses fonctionnalités, et identifiez les vulnérabilités pour récupérer les flags à partir du TOP 10 OWASP 2021 :

  1. Broken Access Control (Contrôle d’accès défaillant)

    • Description : Les mécanismes de contrôle d'accès sont mal implémentés, permettant à des utilisateurs non autorisés d'accéder à des données ou fonctionnalités protégées.
    • Exemples : IDOR (Insecure Direct Object References), contournement des autorisations, escalade de privilèges.
  2. Cryptographic Failures (Échecs cryptographiques)

    • Description : Les données sensibles ne sont pas correctement protégées en transit ou au repos, souvent à cause de configurations faibles ou d'algorithmes obsolètes.
    • Exemples : Absence de chiffrement, stockage en clair des mots de passe, utilisation de TLS non sécurisé.
  3. Injection

    • Description : Les données malveillantes insérées dans une requête ou un script peuvent être interprétées par le serveur ou l’application.
    • Exemples : SQL Injection, Command Injection, LDAP Injection.
  4. Insecure Design (Conception non sécurisée)

    • Description : Les failles proviennent d'erreurs dans la conception des systèmes, souvent liées à l'absence de prise en compte des principes de sécurité dès le départ.
    • Exemples : Absence de validation des entrées, absence de planification pour le contrôle d'accès.
  5. Security Misconfiguration (Mauvaises configurations de sécurité)

    • Description : Des paramètres par défaut ou des configurations incorrectes laissent des portes ouvertes aux attaques.
    • Exemples : Serveurs exposant des fichiers sensibles, interfaces de gestion accessibles publiquement, headers HTTP mal configurés.
  6. Vulnerable and Outdated Components (Composants vulnérables ou obsolètes)

    • Description : L’utilisation de bibliothèques, de frameworks ou de dépendances contenant des vulnérabilités connues.
    • Exemples : Utilisation d’une version obsolète de jQuery ou de Log4j.
  7. Identification and Authentication Failures (Défaillances dans l’identification et l’authentification)

    • Description : Des mécanismes faibles ou mal implémentés permettent des attaques sur l'authentification ou les sessions utilisateur.
    • Exemples : Mot de passe faible, gestion incorrecte des tokens de session, attaques par force brute.
  8. Software and Data Integrity Failures (Échec de l’intégrité des logiciels et des données)

    • Description : Les systèmes ne vérifient pas l’intégrité des données ou du code, ce qui permet des attaques de type "supply chain" ou des modifications non détectées.
    • Exemples : Absence de vérification des signatures numériques, utilisation de dépôts logiciels compromis.
  9. Security Logging and Monitoring Failures (Défaillances des journaux et de la surveillance de sécurité)

    • Description : L'absence de journalisation ou de surveillance complique la détection des attaques ou la réponse à celles-ci.
    • Exemples : Aucune alerte sur des connexions suspectes, logs insuffisants pour les enquêtes post-incident.
  10. Server-Side Request Forgery (SSRF) (Falsification de requête côté serveur)

    • Description : Une application permet à un attaquant de forcer un serveur à effectuer des requêtes non autorisées vers d’autres ressources.
    • Exemples : Utilisation non sécurisée de fonctionnalités permettant de récupérer des données à partir d'URL.

Deployer l'instance du CTF

Ecrire le docker-compose.yml :

services:
  web-blog:
    image: inuya22/blog-arcade-web:1.0

    ports:
      - 8088:8088

  api-secret-blog:
    image: inuya22/blog-arcade-api-secret:1.0

Puis lancer les containers :

docker compose up

Dans votre navigateur : http://127.0.0.1:8088

Flags à récupérer

Le site web est accessible à l'adresse suivante : blog-arcade.flagmalo.fr

Les flags sont dissimulés dans divers endroits du système et suivent ce format :
FMCTF{MON_SUPER_FLAG}. Le nombre de flags et de 5

Message du créateur :
Si vous avez accès au code source du site via une méthode conventionnelle ou non, les flags sont offusqués et chiffrés avec ed25519. Bonne chance pour tenter de les déchiffrer. Et si vous y parvenez... passez au challenge suivant !


Règles

  • Pas d’attaques destructrices : Pas de DDoS ni de suppression de données.
  • Respectez les autres participants et l’environnement cible.
  • Aucun outil spécifique (comme Kali, Nikto, SQLMap) n'est nécessaire. Tout peut être réalisé via un navigateur.
  • Google est votre allié.
  • Documentez vos découvertes avec des captures d’écran et des explications détaillées.

Conseils

Voici une liste des vulnérabilités du Top 10 OWASP (2021) accompagnée de conseils pour les exploiter.

  1. Broken Access Control (Contrôle d’accès défaillant)

Identifiez des points où les ressources sont accessibles via des identifiants (ID) dans les URL, formulaires, ou API. Essayez de modifier ces identifiants (IDOR) pour accéder à des ressources qui ne vous appartiennent pas. Par exemple :

URL : https://example.com/user/123 → Changez en https://example.com/user/124.

URL : https://example.com/user?id=123 → Changez en https://example.com/user?id=124.

Observez si vous accédez à des informations d’un autre utilisateur.

  1. Cryptographic Failures (Échecs cryptographiques)

Vérifiez si des données sensibles (mots de passe, tokens) sont stockées ou transmises en clair. Pour cela :

Interceptez le trafic avec un proxy comme Burp Suite.

Recherchez des mots de passe non hachés dans les réponses HTTP ou dans des fichiers de configuration.

Testez si des algorithmes faibles comme MD5 ou SHA-1 sont utilisés.

  1. Injection

Testez les entrées utilisateur (formulaires, URLs) avec des charges utiles spécifiques. Par exemple :

SQL Injection : Essayez des charges comme ' OR 1=1-- dans les champs de login.

Command Injection : Si un champ permet d’uploader un fichier/saisie donner une commande, essayez ; ls ou && whoami ou printenv pour exécuter des commandes système.

Tips: $(commande linux)

Automatisez avec des outils comme SQLmap pour des bases SQL vulnérables.

  1. Insecure Design

Identifiez des flux ou des fonctionnalités mal pensées. Par exemple :

Testez si une fonctionnalité de réinitialisation de mot de passe peut être abusée pour accéder à un compte.

Essayez de contourner les limitations logiques (ex. : passer une étape de vérification simplement en modifiant un paramètre).

  1. Security Misconfiguration

Recherchez des configurations faibles ou mal sécurisées. Par exemple :

Utilisez nmap ou Nikto pour scanner le serveur et identifier des fichiers accessibles (comme .env, .git, ou backup.zip).

Recherchez les headers HTTP mal configurés comme X-Frame-Options ou Content-Security-Policy.

Essayez d'accéder à des répertoires courants : /admin, /backup, ou /test, /flag.

  1. Vulnerable and Outdated Components

Identifiez les versions des composants utilisés par le serveur (frameworks, CMS, bibliothèques).

Analysez les réponses HTTP pour détecter les versions (via le header Server ou les pages d’erreur).

Recherchez des exploits publics pour ces versions sur des bases comme Exploit-DB ou CVE Details.

  1. Identification and Authentication Failures

Testez les mécanismes d’authentification pour détecter des faiblesses :

Effectuez une attaque par force brute ou dictionnaire si aucune limitation de tentative n’est en place (avec Hydra ou Burp Intruder).

Recherchez des tokens ou cookies mal protégés. Essayez de voler un cookie (via XSS) ou de le modifier pour escalader vos privilèges.

  1. Software and Data Integrity Failures

Vérifiez si des fichiers externes sont utilisés sans validation. Par exemple :

Si une fonctionnalité télécharge des fichiers ou les exécute automatiquement, remplacez-les par des fichiers malveillants.

Interceptez les requêtes pour vérifier si une signature ou un hash est vérifié. Si ce n’est pas le cas, injectez du code malveillant.

  1. Security Logging and Monitoring Failures

Simulez des attaques pour tester si elles sont détectées. Par exemple :

Essayez des attaques brutales ou répétées et observez si vous êtes bloqué(e).

Recherchez des logs non protégés ou accessibles publiquement qui contiennent des informations sensibles.

  1. Server-Side Request Forgery (SSRF)

Identifiez des points où vous pouvez forcer le serveur à effectuer une requête HTTP.

Fournissez une URL externe malveillante (par ex. : une addresse locale comme http://api-secret-blog/flag) et voyez si le serveur répond.

Exploitez pour accéder à des services internes ou exfiltrer des données.

Bonne chance dans cette exploration du blog des amateurs d’arcade rétro ! 🎮