Démarrez la machine, hackez le système et trouvez les flags cachés pour compléter ce défi et gagner des XP!
L'exécution de code à distance (RCE) est parmi les vulnérabilités les plus graves en sécurité des applications web. Elle permet à un attaquant d'exécuter des commandes arbitraires sur le serveur hébergeant l'application, pouvant potentiellement mener à une compromission complète du système. Les vulnérabilités RCE dans les applications PHP sont particulièrement courantes en raison des nombreuses fonctions du langage qui peuvent exécuter des commandes système ou évaluer du code dynamiquement.
PHP fournit plusieurs fonctions dangereuses pouvant mener à l'exécution de code à distance lorsqu'elles sont combinées avec une entrée utilisateur non assainie. Les fonctions comme system(), exec(), shell_exec(), passthru() et l'opérateur backtick exécutent toutes des commandes du système d'exploitation. De même, eval(), assert() et preg_replace() avec le modificateur /e peuvent évaluer du code PHP à partir de chaînes de caractères. Lorsqu'une de ces fonctions traite une entrée contrôlable par l'utilisateur sans validation appropriée, un attaquant peut injecter et exécuter des commandes arbitraires sur le serveur.
Comprendre l'injection de commandes nécessite une connaissance de la façon dont les applications web interagissent avec le système d'exploitation sous-jacent. Dans un scénario typique, une application PHP peut passer l'entrée utilisateur à une commande système - par exemple, en utilisant ping ou nslookup pour vérifier la connectivité réseau. Un attaquant peut sortir de la commande prévue en injectant des métacaractères shell comme des points-virgules (;), des pipes (|) ou une syntaxe de substitution de commande ($(command)) pour ajouter des commandes supplémentaires. Les commandes injectées s'exécutent avec les mêmes privilèges que le processus du serveur web.
L'exploitation réussie d'une RCE donne aux attaquants un point d'ancrage sur le serveur, à partir duquel ils peuvent lire des fichiers sensibles, accéder aux bases de données, pivoter vers les réseaux internes ou installer des portes dérobées persistantes. La prévention nécessite d'éviter les fonctions dangereuses lorsque c'est possible, d'utiliser des commandes paramétrées, d'implémenter une validation stricte des entrées avec des listes blanches et d'exécuter les applications web avec des privilèges minimaux. Les tests de sécurité doivent cibler spécifiquement toute fonctionnalité où l'entrée utilisateur pourrait atteindre des fonctions d'exécution de commandes.
Créez un compte gratuit et pratiquez la cybersécurité.
Lancez votre machine dédiée pour commencer à hacker
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