Injection de commandes

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

Injection de commandes — Étapes de la formation

  1. 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.

  2. Il exécute une vraie commande

    Une ligne sur cette page est la seule raison pour laquelle Bob est intéressé.

  3. 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.

  4. 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.

  5. 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.

  6. Les clés sont parties

    Le ping s'est exécuté, puis des lignes apparaissent que le ping ne produit jamais.

  7. 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.

  8. 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.

  9. Ouvrir le gestionnaire

    Le point de terminaison ping est servi par ping.js . Ouvrez-le et regardez comment il exécute la commande.

  10. 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