Roskyfrosky


Mr.Robot VulnHub Boot2Root

07 Mar 2017 » vulnhub

Mr.Robot Boot2Root Vulnhub

URL de la máquina: https://www.vulnhub.com/entry/mr-robot-1,151/
Descripción: Based on the show, Mr. Robot. This VM has three keys hidden in different locations. Your goal is to find all three. Each key is progressively difficult to find. The VM isn’t too difficult. There isn’t any advanced exploitation or reverse engineering. The level is considered beginner-intermediate.

Solución

Lo primero que hacemos siempre, es realizar un escaneo de puertos de la máquina para ver que servicios están corriendo.

Nmap

Vemos que tiene abiertos los puertos 80, y 443.

Accedemos a la ip por el navegador para comprobar que nos encontramos

Flag 1

Nos aparece una intro y nos aparece una shell en la cuál podemos introducir los comandos que aparecen en pantalla. Jugamos un rato con los comando y vemos que no son de utilidad, que son solo una distración, por lo que pasamos a empezar a analizar la página. En primer lugar, una de las cosas que suelo hacer siempre en una web es comprobar si existe el fichero robots.txt

Flag 2

Y nos encontramos con la primera flag de las tres que hay. Accedemos al fichero “key-1-of-3.txt” y obtenemos 073403c8a58a1f80d943455fb30724b9. El otro fichero “fsociety.doc” parece ser un diccionario que tendremos que utilizar más tarde.

Acto seguido, trás mirar el código fuente de la página, las cabeceras de las peticiones y demás cosas básicas, lanzamos un dirbuster para ver si encontramos algún directorio o fichero interesante.Para ello utilizamos el diccionario por defecto “commont.txt” que viene con la propia herramienta.

Dirbuster

Encontramos un par de directorios interesantes que son “admin” y “dashboard” por lo que intentamos entrar en ellos. Al intentar entrar en el directorío dashboard nos hace una redirección como bien se ha marcado en la imagen del Dirbuster y nos redirige al login de un wordpress.

Wordpress

Comprobamos si existe enumeración de usuarios y comprobamos que es correcto. Trás probar varios usuarios típicos como admin,root,administrador,administrator,etc siempre obtenemos el mensaje “Usuario o contraseña inválidos” por lo que pensamos en empezar a poner nombres de personajes de la serie de MrRobot, que para eso se llama así la máquina.
Y en seguida encontramos que existe un usuario con nombre “elliot”.

Wordpress Login

Entonces pensamos que el diccionario que hemos encontrado en primer lugar, tiene que ser para hacer fuerza bruta al login.Dado que es un wordpress, utilizamos la herramienta por excelencia con este cms, wpscan, y trás un largo rato conseguimos encontrar la contraseña.

Wordpress Bruteforce

Procedemos a entrar al wordpress con usuario “elliot” y contraseña “ER28-0652”. Una vez dentro lo primero que hacemos es comprobar que nivel de privilegios tiene el usuario con el que hemos conseguido acceder.

Wordpress users

Tenemos suerte ya que nuestro usuario tiene permisos de administrador, por lo que el siguiente paso es editar un fichero existente en el servidor para conectarnos con una reverse shell a nuestra máquina y hacernos las cosas algo más sencillas.

Para ello, accedemos a nuestra página preferida para hacer pentesting donde podemos encontrar una reverse shell en php: http://pentestmonkey.net/tools/web-shells/php-reverse-shell

Nos las descargamos y copiamos el código habiendo modificado la IP y el puerto donde queremos que se conecte la máquina y lo copiamos en un fichero del wordpress. Nosotros hemos elegido el fichero 404.php.

Reverse Shell

Una vez que hemos modificado el fichero con la reverse shell, lanzamos un netcat en nuestra máquina local, en modo listen(parámetro -l) en el puerto que hemos elegido en el fichero de la reverse shell y accedemos al fichero 404.php para que se produzca la conexión.

Conexión inversa

Una vez realiza la conexión inversa, comprobamos que usuario somos con el comando “whoami” y después pasamos a la búsqueda de la siguiente flag. Para ello en estos caso suele estar en el home de algún usuario, por lo que entro en el único usuario que hay en la máquina “home/robot” y listamos los ficheros que se encuentran en el directorio.

Flag 2

Vemos que existen dos ficheros entre los cuales se encuentra la segunda flag que estabamos buscando. Por desgracia ambos ficheros pertenencen al usuario y grupo robot, pero por suerte el segudon fichero “password.raw-md5” tiene permisos de lectura habilitado para todos los usuarios. Hacemos un cat al fichero y nos arroja un usuario “robot” y el hash md5 de su contraseña, que debemos buscar por internet para comprobar si está crackeado. Accedemos a https://hashkiller.co.uk/ e introduccimos el hash que hemos obtenido, y por suerte está crackeado :D.

Hash MD5

Ahora para leer la key 2 solo tenemos que loguearnos como usuario robot y hacer un cat al fichero “key-2-of-3.txt”

Al intentar loguearnos con el usuario robot, nos indica que tenemos que hacerlo desde un terminal, por lo que vamos a invocar una shell mediante python. Para ello utilizamos la siguiente porción de código:

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

Flag 2

Ahora toca buscar la tercera clave.Por norma general la última clave solo puede ser accesible por el usuario root, por lo que vamos a ver si podemos elevar privilegios en el sistema. Para ello realizamos una busqueda para ver si existe algún fichero que tengo el bit suid activo.

Flag 3

Vaya parece ser que hay suerte y encontramos la herramienta nmap con el bit suid activo, lo que significa que si lanzamos la herramienta en modo interactivo nos permitirá ejecutar comandos.La idea ahora es invocar una shell mediante comando que se ejecutara con usuario root.

Para ello lanzamos la herramienta en modo interactivo con el commando

nmap -\-interactive

Dado que no me acuerdo que parámetro se utiliza para lanzar comandos en el modo interactivo, utilizo “h” para que me muestre la ayuda. Vemos que para ejecutar comandos debe de ir acompañados con el carácter “!” al principio. Ejecutamos !/bin/sh para para obtener una shell y comprobamos que somos el usuairo root.

Help Nmap

Dado que ya somos usuario root, ahora solo queda entrar en el directorio root y hacerle un cat al fichero “key-3-of-3.txt”.

Flag 3

Además del fichero “key-3-of-3.txt” nos encontramos un fichero “firstboot_done” que nos indica que hemos terminado la máquina.