
Preuve de concept démontrant une vulnérabilité d'injection de commandes dans l'outil MS-Agent Shell, permettant l'exécution arbitraire de commandes et un shell inversé via le contournement des contrôles de sécurité par Python.
Une vulnérabilité critique d'injection de commandes (CVE-2026–2256, CVSS X.X) a été identifiée dans le composant Shell de l'outil MS-Agent version 1.5.2. La vulnérabilité provient d'une désinfection inadéquate des entrées influencées par l'utilisateur, transmises directement à un contexte d'exécution shell, permettant une évaluation de commandes non intentionnelle. Un attaquant peut exploiter cette faille en injectant du contenu conçu dans les sources de données consommées par l'agent, telles que les invites, documents, journaux ou entrées de recherche, sans nécessiter d'accès shell direct ni d'utilisation abusive explicite de l'opérateur. Par conséquent, des commandes arbitraires peuvent être exécutées avec les privilèges du processus MS-Agent sur le système hôte dans le cadre du flux d'exécution normal de l'agent, pouvant conduire à une compromission totale de l'hôte.
L'outil Shell est un composant interne de MS-Agent qui permet aux agents d'exécuter des commandes du système d'exploitation sur l'hôte. Il est conçu pour prendre en charge les flux de travail des agents tels que la gestion de fichiers, la navigation dans les répertoires et les tâches d'automatisation en déléguant l'exécution des commandes au système d'exploitation sous-jacent.
Ce PoC simplifié montre comment la fonction check_safe() de l'outil Shell de ms-agent peut être contournée pour établir un shell inversé à l'aide de Python.
nc (netcat)Exécutez le PoC pour vérifier que la commande contourne les contrôles de sécurité. Sortie attendue : ✓ CONTOURNEMENT RÉUSSI - la commande passe tous les contrôles de sécurité
Ouvrez une NOUVELLE fenêtre de terminal et exécutez :
nc -l 1111
Cela démarre un écouteur sur le port 1111. Laissez ce terminal ouvert et en attente.
Dans votre terminal d'origine, exécutez :
./reverse_shell_poc.py --execute
Lorsque vous y êtes invité, tapez yes et appuyez sur Entrée.
Basculez vers le terminal avec l'écouteur netcat (de l'étape 2). Vous devriez maintenant avoir une invite de shell !
Essayez des commandes comme :
whoami - voir votre nom d'utilisateurpwd - voir le répertoire courantls - lister les fichiersexit - fermer la connexionpython3 pour exécuter du code arbitrairepython3 n'est PAS dans la liste des commandes bloquéesLa fonction check_safe() bloque des commandes comme :
sudo, rm -rf /, chmod, curl | bash, etc.Mais elle ne bloque PAS :
python3 (exécution de code arbitraire)nc (netcat - connexions réseau)perl, ruby, node (autres interpréteurs)Cela démontre une vulnérabilité CRITIQUE :
Après les tests, vous pouvez supprimer le répertoire de test :
rm -rf /tmp/test_output
Il s'agit d'une démonstration limitée à localhost (connexion à 127.0.0.1). Ce PoC évite intentionnellement la connectivité à distance pour réduire le risque d'abus.