Apparemment, l'exploit Csh-2014-6271 de Bash shellshock peut être exploité sur le réseau via SSH. Je peux imaginer comment l'exploit fonctionnerait avec Apache / CGI, mais je ne peux pas imaginer comment cela fonctionnerait avec SSH?
Quelqu'un peut-il, s'il vous plaît, donner un exemple de la manière dont la SSH serait exploitée et quel préjudice pourrait être causé au système?
CLARIFICATION
AFAIU, seul un utilisateur authentifié peut exploiter cette vulnérabilité via SSH. À quoi sert cet exploit pour quelqu'un qui a de toute façon un accès légitime au système? Je veux dire, cet exploit n'a pas d'élévation de privilèges (il ne peut pas devenir root), il ne peut donc pas faire plus qu'il n'aurait pu faire après s'être connecté de manière légitime via SSH.
bash
ssh
shellshock
Martin Vegter
la source
la source
Réponses:
Un exemple où ceci peut être exploité est sur des serveurs avec une
authorized_keys
commande forcée. Lors de l'ajout d'une entrée à~/.ssh/authorized_keys
, vous pouvez préfixer la ligne aveccommand="foo"
pour forcerfoo
l'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 surbash
, 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:
Ici, nous configurons un utilisateur
testuser
, qui force toutes les connexions SSH utilisant votre clé SSH à s'exécuterecho starting sleep; sleep 1
.Nous pouvons tester cela avec:
Notez que notre commande ne s'exécute
echo something else
pas, mais qu'ellestarting sleep
indique que la commande forcée a été exécutée.Voyons maintenant comment cet exploit peut être utilisé:
Cela fonctionne car
sshd
définit laSSH_ORIGINAL_COMMAND
variable d'environnement sur la commande transmise. Ainsi, même s’il a étésshd
exécutésleep
, et non la commande à laquelle je l’ai dit, à cause de l’exploit, mon code est toujours exécuté.la source
ssh testuser@localhost echo something else '`whoami`'
afin de prouver où la commande est exécutéeReprenons l'exemple de Ramesh: si vous utilisez une authentification à deux facteurs, il est possible de contourner le deuxième facteur à l'aide de cet exploit, en fonction de la manière dont il est implémenté.
- Connexion normale -
- Code en cours d'exécution sans 2FA -
Vous remarquerez qu'il a exécuté le code sans demander 2FA.
- Après avoir patché bash -
la source
read
fonction. Sinon, l'utilisateur est en sécurité.Shellshock est une vulnérabilité sur bash, pas sur SSH. Pour l'exploiter, un attaquant doit obliger le système vulnérable à exécuter bash et à contrôler la valeur d'une variable d'environnement qui sera transmise à bash.
Pour pouvoir accéder à un processus bash via SSH, l'attaquant doit réussir les étapes d'authentification. (Il peut exister des vecteurs d'attaque via d'autres services réseau, mais ils dépassent le cadre de ce fil.) Si le compte est autorisé à exécuter des commandes shell arbitraires, il n'y a pas d'attaque. La vulnérabilité entre en jeu si le compte est limité à l'exécution de commandes spécifiques: par exemple, un compte uniquement SFTP ou un compte git uniquement, etc.
Il existe plusieurs façons de restreindre un compte à l’exécution d’une commande spécifique avec SSH: avec l’
ForceCommand
option insshd_config
ou avec acommand=
. restriction dans leauthorized_keys
fichier. Si le shell de l'utilisateur est bash, la vulnérabilité Shellshock permet à un utilisateur qui aurait normalement accès uniquement au compte restreint de contourner la restriction et d'exécuter des commandes arbitraires.la source
zsh
.