Injection de commandes
Un point-virgule dans un champ de formulaire et le serveur exécute votre commande.
Qu'est-ce que Injection de commandes?
L'injection de commandes transforme une requête Web en exécution de code sous la propre identité du serveur. L'application colle les entrées de l'utilisateur dans une chaîne de commande et les transmet à un shell, qui lit chaque caractère spécial comme syntaxe. Vous allez ajouter un point-virgule au champ hôte d'un outil de diagnostic réseau, exécuter une deuxième commande et relire le fichier d'environnement contenant le mot de passe de la base de données. Ensuite, vous remplacez la chaîne concaténée par execFile afin que l'hôte reste un seul argument et voyez pourquoi le filtrage des caractères dangereux est toujours perdant.
Ce que vous apprendrez dans Injection de commandes
- Identifiez le modèle de shell-out : toute entrée utilisateur collée dans une chaîne de commande transmise à un shell (exec, system, sh -c) est un candidat à l'injection de commande.
- Reconnaître comment un séparateur de shell comme un point-virgule transforme une commande en deux lorsque l'entrée n'est pas conservée en dehors du shell
- Appliquez le correctif de liste d'arguments : execFile ou générez avec un tableau d'arguments afin que le programme s'exécute directement et que les caractères du shell dans l'entrée restent littéraux.
- Comprendre pourquoi filtrer les caractères comme ; et | échoue (d'autres séparateurs, encodages et substitutions le contournent)
- Réduisez le rayon d'explosion avec le moins de privilèges et en gardant les secrets hors des fichiers qu'un employé peut lire
Injection de commandes — Étapes de la formation
-
L'outil de diagnostic
Trelvane gère une plate-forme d'hébergement et propose un miroir public : collez un hôte et les serveurs périphériques de Trelvane lui envoient une requête ping pour vous et restituent le résultat brut. Pratique pour les clients qui vérifient si un serveur est accessible. Bob l'ouvre pour voir comment il se comporte avant de le toucher.
-
Il exécute une vraie commande
Une ligne sur cette page est la seule raison pour laquelle Bob est intéressé.
-
Utilisez la fonctionnalité
Regardez l'outil se comporter normalement. Pingez un hôte ordinaire pour que le navigateur capture la requête envoyée par la page.
-
Trouver la demande
La demande a été envoyée et le navigateur l'a enregistrée. Ouvrez le panneau Réseau et lisez où la page l'a envoyée et comment l'hôte se déplace.
-
Injecter une deuxième commande
Bob ne touche plus jamais au formulaire. Il modifie la requête capturée dans le panneau Réseau et réécrit la valeur host : une adresse de bouclage, un point-virgule, puis deux commandes qui lui sont propres. Si le serveur crée sa commande ping en collant la valeur, le point-virgule termine le ping et les commandes de Bob s'exécutent juste après. Il enchaîne id pour voir sous quel nom le serveur s'exécute et un cat du fichier d'environnement du travailleur, où les agents d'hébergement conservent leur mot de passe de base de données et leurs clés cloud.
-
Les clés sont parties
Le ping s'est exécuté, puis des lignes apparaissent que le ping ne produit jamais.
-
Contrôle des connaissances
Vous venez de voir un outil ping exécuter les commandes de l'attaquant et divulguer les secrets du serveur. Verrouillez pourquoi.
-
L'alerte
Vous possédez le service Looking Glass de Trelvane. Du jour au lendemain, la surveillance a signalé que l'agent de diagnostic faisait quelque chose qu'un outil ping ne devrait jamais faire : exécuter des commandes shell et lire son propre fichier secrets. Les opérations de sécurité vous ont envoyé les détails par e-mail.
-
Ouvrir le gestionnaire
Le point de terminaison ping est servi par ping.js . Ouvrez-le et regardez comment il exécute la commande.
-
Repérez le défaut
Le gestionnaire colle la valeur de l'hôte dans une chaîne de commande et transmet la chaîne entière à un shell pour qu'il l'exécute.
Couverture des référentiels de sécurité
OWASP Top 10
- A05:2025 Injection
- A03:2021 Injection
CWE
- CWE-78 Improper Neutralization of Special Elements used in an OS Command
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security