Introducción
En este write up veremos la máquina 0day, explotaremos vulnerabilidades conocidas cómo shellshock y exploits de tipo kernel
Reconocimiento
Vamos a hacer un escaneo con Nmap sudo nmap -sS -sV -T4 "ip"
el output que nos muestra es el siguiente
hay un puerto SSH (22) y uno de HTTP (80)
Luego vamos a seguir enumerando pero esta vez directorios con Gobuster
Vemos que hay varios directorios interesantes cómo /admin, /uploads, /cgi-bin y /secret
Si ingresamos a /admin y /uploads no nos muestra nada interesante (de hecho no muestra nada)
y si ingresamos a /secret nos sale esto
Tampoco nada interesante
Seguimos enumerando con Nikto y este es el output
Si nos fijamos bien, dice que el directorio /cgi-bin/test.cgi es vulnerable a Shellshock
Ahora vamos a ir a ese directorio para ver que observamos dentro de el
Es un simple Hello World pero que podemos inferir que vamos por el buen camino
Acceso Inicial
Ahora que sabemos que este directorio es vulnerable a Shellshock vamos a proceder a explotarlo
En resumen la vulnerabilidad Shellshock es una vulnerabilidad crítica, que afecta a versiones antiguas de Bash, los archivos CGI se usan por el webserver para ejecutar comandos en un lenguaje de scripting nativo, este caso, quiere decir que el archivo “test.cgi” está corriendo comandos de Bash, con versiones vulnerables de Bash, inyectando una definición de función ((){ :;};) dentro del output de tal script, va a forzar que el script ejecute cualquier comando que nosotros le indiquemos
Así que ejecutamos el comando curl -A "() { :;}; echo Content-Type: text/html; echo; /bin/cat /etc/passwd;" http://IP_MAQUINA/cgi-bin/test.cgi
y este sería el output
1) () { :;};
= Esto define una función de Bash vacía, sirve para activar la vulnerabilidad, ya que shellshock se basa en una declaración de una función antes de que se ejecuten todos los comandos posteriores
2) echo Content-Type: text/html; echo;
= esto sirve para prevenir que el server de caiga cuando la vulnerabilidad está siendo explotada, sin esto el servidor devolvería un “500 internal server”
3) /bin/cat /etc/passwd;
= y estos son los comandos que queremos que sean ejecutados, siempre tiene que ser con una ruta absoluta
Indagando más acerca de este CVE, existen unos módulos de shellshock adaptados para Metasploit, así que vamos a usar el número 5 que es el que nos sirve
Rellenamos todos los datos esenciales
Y explotamos
Y listo, ya tenemos nuestro meterpreter
Ahora dentro de este, creamos una shell
y vemos un usuario Ryan, accedemos y está el user.txt
Escalando Privilegios
Vamos a indagar más acerca de la arquitectura de este sistema y sus versiones, para ello utilizamos el comando cat /etc/*-release
y uname -a
Podemos ver que la versión del Ubuntu es una versión muy antigua “14.04.1 LTS” y que la versión del Kernel es “3.13.0”
No nos quedan más vectores por explotar, así que vamos a utilizar un exploit de kernel
Con searchsploit y la versión del kernel buscamos si hay algún exploit disponible
Vemos que si hay uno y está en C así que toca compilarlo luego
Así que movemos el exploit a nuestro directorio
Luego en el meterpreter nos vamos a /tmp y subimos el archivo desde nuestra máquina al servidor
Ahora que está dentro, lo compilamos con gcc, hacemos un ls y observamos que hay un archivo “a.out” y lo ejecutamos
Y ahora somos r00t!