Les opérateurs de contrôle du shell permettent à une valeur injectée de terminer la commande prévue et d'en commencer une autre. Un point-virgule exécute les commandes séquentiellement ; && et || les exécutent conditionnellement selon le succès ou l'échec de la commande précédente (un oracle booléen utile) ; et une esperluette finale & exécute un job en arrière-plan. Chaque fois que l'application invoque un shell, chacun de ces opérateurs transforme un seul paramètre injectable en exécution de commande arbitraire.
Pages#
- Exécution en arrière-plan (&) : Utiliser & pour détacher une commande injectée afin qu'elle s'exécute de façon asynchrone, gardant la réponse rapide pendant qu'un payload s'exécute, et la signification de & comme...
- Exécution conditionnelle (&& et ||) : Utiliser les opérateurs de shell AND (&&) et OR (||) pour exécuter des commandes en cas de succès ou d'échec et construire un oracle d'exfiltration booléen en injection de commande OS aveugle.
- Exécution séquentielle (;) : Utiliser ; pour ajouter des commandes qui s'exécutent inconditionnellement après qu'une valeur injectée atteint un shell, la primitive d'injection de commande OS la plus simple.
Outils#
- commix : détection et exploitation automatisées de l'injection de commande.
- Burp Suite : Repeater et Intruder pour l'injection de séparateurs.