Injection de commande OS

Qu’est-ce que l’injection de commande OS ?

Une injection de commande du système d’exploitation est une vulnérabilité de sécurité Web qui permet l’exécution de commandes du système d’exploitation non autorisées. Une vulnérabilité d’injection de commandes du système d’exploitation survient lorsqu’une application Web envoie des commandes système non désinfectées et non filtrées à exécuter. En raison de la validation d’entrée insuffisante, un attaquant pourrait injecter ses propres commandes pour les faire fonctionner au niveau du shell. L’attaquant introduit des commandes du système d’exploitation via des données fournies par l’utilisateur telles que des cookies, des formulaires ou des en-têtes HTTP.

Il s’agit d’une vulnérabilité dangereuse car les commandes du système d’exploitation fournies par l’attaquant sont généralement exécutées avec les privilèges de l’application vulnérable. Par conséquent, un attaquant pourrait prendre le contrôle complet de l’hôte exploitant la tige d’injection de commande sy  OS compromettant l’application et toutes ses données.

Contrairement aux vulnérabilités d’injection de code qui existent lorsqu’un attaquant peut soumettre une entrée exécutable à un programme et inciter le logiciel à exécuter cette entrée. Une vulnérabilité d’injection de commandes exploite les faiblesses d’un système non protégé qui permet l’exécution de commandes arbitraires sans avoir à injecter de code. Les deux vulnérabilités résultent d’une validation correcte des données d’entrée / sortie.

Commandes utiles

Voici quelques commandes utiles qui peuvent vous donner plus d’informations sur le système d’exploitation que vous attaquez

But du commandement

Linux

Fenêtres

Nom de l’utilisateur actuel

whoami

whoami

Système d’exploitation

uname-a

ver

Configuration réseau

ifconfig

ipconfig / tout

Connexions réseau

netstat – un

netstat – un

Processus en cours d’exécution

ps-ef

liste des tâches

Façons d’injecter des commandes OS

Afin de tester votre application pour une vulnérabilité d’injection de commandes, essayez d’utiliser des métacaractères qui permettent de chaîner les commandes ensemble. Si vous pouvez exécuter votre propre commande, l’application Web est vulnérable. Les séparateurs de commandes suivants fonctionnent à la fois sur les systèmes Windows et Unix:

  • &
  • &&
  • |
  • ||

D’autres charges utiles d’injection de commandes incluent la commande ping ci-dessous qui déclenchera un délai, vous permettant de confirmer que la commande a été exécutée en fonction du temps nécessaire à l’application pour répondre. La commande ci-dessous prendra 10 secondes pour renvoyer une réponse.

& ping-c 10 127.0.0.1 &

Les attaquants peuvent également confirmer une vulnérabilité de commande du système d’exploitation en utilisant la commande nslookup sur un domaine qu’ils contrôlent. Si la recherche se produit, ils savent que leur injection de commande a réussi.

Diverses autres commandes pour tester votre application :

php-v vous donne la version PHP fonctionnant sur le serveur d’applications web.

&& cat/etc/passwddaffiche tous les utilisateurs sur le serveur Linux principal

/etc/shadowaffiche tous les mots de passe hachés, mais uniquement si vous utilisez les privilèges root.

Comment prévenir les attaques par injection de commandes du système d’exploitation

  1. Option de défense 1: Évitez d’appeler directement les commandes du système d’exploitation – évitez d’appeler directement les commandes du système d’exploitation. Les fonctions de bibliothèque intégrées sont une très bonne alternative aux commandes du système d’exploitation.
  2. Option de défense 2: Valeurs d’échappement ajoutées aux commandes du système d’exploitation spécifiques à chaque système d’exploitation – Par exemple escapeshellcmd() en PHP.
  3. Option de défense 3: Le paramétrage en conjonction avec la validation d’entrée – Si l’utilisateur fourni ne peut pas être évitéparamétrisation etla validation d’entrée doit être utilisée.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.