Command Hijacking
Dans un système Linux, lorsque l’on cherche à exécuter une commande comme ls, on n’a pas besoin de préciser le chemin de ce binaire alors qu’il n’est pas forcément dans notre répertoire courant. Cette fonctionnalité est possible grâce à la variable d’environnement PATH, qui spécifie une liste de répertoires contenant des exécutables.
Quand une commande est appelée, le shell parcourt successivement chaque dossier défini dans le PATH jusqu’à trouver un fichier exécutable portant le nom recherché.
Utilisation de ls avec le PATH

Utilisation de ls sans le PATH

Ce mecanisme est essentiel pour un OS linux mais permet également d’introduire des vulnérabilités de command hijacking
Qu’est ce qu’un command hijacking ?
Le command hijacking désigne le fait de détourner l’exécution d’une commande en plaçant un exécutable portant le même nom dans un répertoire ajouté au début du PATH. Dans notre cas nous allons usurper la commande ls en créant un fichier executable portant le même nom dans mon répertoire personnel, ensuite nous allons rajouter le chemin de mon répertoire personnel dans le PATH
Voici le nouveau ls
#!/bin/bash
echo "la commande 'ls' à été usurpée"
Etant stocké dans mon repertoire personnel je vais l’ajouter au PATH
PATH="/home/nsixo:$PATH"
Voici le résultat

Dans cette exemple j’ai juste affiché un simple message dans un terminal mais dans des environnements mal configurés, ce mécanisme peut conduire à une élévation de privilèges si un script sensible invoque un binaire avec des droits élevés et sans chemin absolu.
Mitigation
Afin de se protéger contre ces attaques, il faut respecter quelques bonnes pratiques :
- Mettre en place des droits stricts sur les éléments à risque, notamment les scripts.
- Utiliser des chemins absolus vers les binaires dans les scripts.
- Éviter d’ajouter au début du PATH des répertoires facilement accessibles en écriture, comme les répertoires personnels. Avec ces mesures, le risque d’être exposé à ce type de vulnérabilité est fortement réduit.