Aparentemente, el exploit shellshock Bash CVE-2014-6271 puede explotarse a través de la red a través de SSH. Puedo imaginar cómo funcionaría el exploit a través de Apache / CGI, pero no puedo imaginar cómo funcionaría eso en SSH.
¿Alguien puede dar un ejemplo de cómo se explotaría SSH y qué daño podría hacerse al sistema?
ACLARACIÓN
AFAIU, solo un usuario autenticado puede aprovechar esta vulnerabilidad a través de SSH. ¿De qué sirve este exploit para alguien que tiene acceso legítimo al sistema de todos modos? Quiero decir, este exploit no tiene escalada de privilegios (no puede convertirse en root), por lo que no puede hacer más de lo que podría haber hecho después de simplemente iniciar sesión legítimamente a través de SSH.
bash
ssh
shellshock
Martin Vegter
fuente
fuente
Respuestas:
Un ejemplo en el que esto puede explotarse es en servidores con un
authorized_keys
comando forzado. Al agregar una entrada a~/.ssh/authorized_keys
, puede ponerle un prefijo a la líneacommand="foo"
para forzarfoo
que se ejecute cada vez que se use la clave pública ssh. Con este exploit, si el shell del usuario objetivo está configuradobash
, puede aprovechar el exploit para ejecutar otras cosas además del comando al que se ve obligado.Esto probablemente tendría más sentido en el ejemplo, así que aquí hay un ejemplo:
Aquí configuramos un usuario
testuser
, que fuerza cualquier conexión ssh que use su clave ssh para ejecutarseecho starting sleep; sleep 1
.Podemos probar esto con:
Observe cómo nuestro
echo something else
no se ejecuta, perostarting sleep
muestra que el comando forzado sí se ejecutó.Ahora vamos a mostrar cómo se puede usar este exploit:
Esto funciona porque
sshd
establece laSSH_ORIGINAL_COMMAND
variable de entorno para el comando pasado. Entonces, aunque sesshd
ejecutósleep
, y no el comando que le dije, debido a la vulnerabilidad, mi código aún se ejecuta.fuente
ssh testuser@localhost echo something else '`whoami`'
para probar dónde se está ejecutando el comandoAmpliando el ejemplo de Ramesh: si usa la autenticación de dos factores, es posible omitir el segundo factor usando este exploit, dependiendo de cómo se implemente.
- Inicio de sesión normal -
- Código de ejecución sin 2FA -
Notarás que ejecutó el código sin solicitar 2FA.
- Después de parchear bash -
fuente
read
función. De lo contrario, el usuario está a salvo.Shellshock es una vulnerabilidad en bash, no en SSH. Para explotarlo, un atacante debe hacer que el sistema vulnerable ejecute bash y controlar el valor de una variable de entorno que se pasará a bash.
Para alcanzar un proceso bash a través de SSH, el atacante debe pasar los pasos de autenticación. (Puede haber vectores de ataque a través de otros servicios de red, pero están más allá del alcance de este hilo). Si la cuenta puede ejecutar comandos de shell arbitrarios de todos modos, no hay ataque. La vulnerabilidad entra en juego si la cuenta está restringida a ejecutar comandos específicos: por ejemplo, una cuenta solo de SFTP, o una cuenta solo de git, etc.
Hay varias formas de restringir una cuenta para ejecutar un comando específico con SSH: con la
ForceCommand
opción ensshd_config
o con acommand=
. restricción en elauthorized_keys
archivo. Si el shell del usuario es bash, entonces la vulnerabilidad Shellshock permite a un usuario que normalmente solo tendría acceso a la cuenta restringida eludir la restricción y ejecutar comandos arbitrarios.fuente
zsh
.