Démarrez la machine, hackez le système et trouvez les flags cachés pour compléter ce défi et gagner des XP!
Le mode debug de Flask est une fonctionnalité de développement qui fournit des pages d'erreur interactives et le rechargement automatique du code. Bien qu'inestimable pendant le développement, laisser le mode debug activé en production est une vulnérabilité de sécurité critique qui peut mener à la compromission complète du serveur. Comprendre les risques de l'exposition du mode debug est essentiel tant pour les développeurs web déployant des applications Python que pour les professionnels de la sécurité qui les testent.
Lorsqu'une application Flask s'exécute en mode debug et rencontre une exception non gérée, elle affiche une page d'erreur détaillée appelée le débogueur Werkzeug. Cette page montre la trace complète de la pile avec le code source pour chaque cadre, les valeurs des variables locales à chaque niveau, et surtout - une console Python interactive. Cette console permet à quiconque peut déclencher une erreur d'exécuter du code Python arbitraire sur le serveur, accordant effectivement l'exécution de code à distance.
Un attaquant qui découvre une application Flask en mode debug peut déclencher des erreurs en envoyant des entrées malformées (comme une division par zéro dans une calculatrice, ou des paramètres invalides). La page de debug résultante expose le code source de l'application, les variables de configuration (qui peuvent contenir des identifiants de base de données, des clés API et des clés secrètes), et fournit une console interactive pour exécuter des commandes. Via cette console, un attaquant peut lire et écrire des fichiers, accéder aux variables d'environnement, exécuter des commandes système et pivoter vers d'autres systèmes du réseau.
Les applications Flask ne doivent jamais s'exécuter avec debug=True en production. Les développeurs doivent utiliser une configuration basée sur l'environnement pour s'assurer que le mode debug n'est actif qu'en développement. Les déploiements en production doivent utiliser des serveurs WSGI comme Gunicorn ou uWSGI derrière un proxy inverse comme Nginx, avec une gestion appropriée des erreurs qui renvoie des pages d'erreur génériques aux utilisateurs. Les secrets de l'application doivent être stockés dans des variables d'environnement, pas dans le code source. Des analyses de sécurité régulières doivent vérifier les interfaces de debug exposées et autres mauvaises configurations courantes des applications web Python.
Créez un compte gratuit et pratiquez la cybersécurité.
Créez un compte gratuit pour démarrer votre propre serveur dédié, soumettre des flags et gagner des XP au classement.
Commencer à Hacker GratuitementLabs qui partagent des compétences similaires
Choisissez comment vous voulez commencer
Connectez-vous à votre compte