Buenas, en esta entrada voy a escribir una guía sobre como vulnerar y conseguir acceso root a la siguiente máquina virtual:https://www.vulnhub.com/entry/mr-robot-1,151/
¿Cómo preparar el laboratorio?
Lo primero que debemos hacer es descargar el archivo .ova del enlace anterior. Desde Oracle VirtualMachineBox importamos este archivo para añadir la máquina virtual a nuestra colección. En mi caso he configurado la red como adaptador puente, para que la máquina tenga una ip propia en nuestra red, como si de cualquier otro usuario se tratase.
Empecemos
El primer paso es encender la máquina virtual, como podemos observar tenemos un login, al cual no podemos acceder, ya que no tenemos usuario y contraseña, aún.
Para conocer la dirección IP de esta máquina voy a realizar un escaneo de mi red con la herramienta netdiscover.
Como podemos observar, nuestro objetivo tiene la siguiente IP: 192.168.1.69
Una vez conocida esta dirección procedemos a realizar un escaneo de puertos y servicios, vulnerabilidades y fallos de autenticación, entre otras cosas, con la herramienta nmap.
nmap -v -Pn -sS -sV -A -T4 192.168.1.69
Tenemos 3 servicios activos:
— http:80 abierto (Apache)
— ssl/http:443 abierto (Apache)
— ssh:22 cerrado
Nuestro objetivo tiene un servidor Apache activo, por lo que podemos navegar hasta su web poniendo su IP en nuestro navegador.
Nos aparecerá una shell en la cual podremos escribir ciertos comandos que nos contarán cosas acerca de la serie Mr. Robot.
Sigamos, vamos a realizar un escaneo de esta web para poder conocer todos sus directorios. Vamos a ayudarnos con las herramientas wpscan y joomscan.
Vemos que tenemos una pagina admin que podría sernos de ayuda, pero trás navegar a ella, esta se recarga continuamente.
Pasemos al archivo robots.txt, en el cual tenemos dos archivos que podemos descargar.
El primero es un diccionario de nombres que quizás podamos utilizarlo más adelante para un ataque de fuerza bruta. El segundo archivo es la primera de las tres claves que tiene este reto, 073403c8a58a1f80d943455fb30724b9.
Otra herramienta que nos muestra los distintos directorios de la web objetivo es dirb, trás su uso descubrimos que existe un login de wordpress, el cual usaremos como punto de acceso a nuestro objetivo.
También podemos usar el escaner web nikto para obtener más información del objetivo.
Vamos a utilizar el diccionario que estaba en el archivo robots.txt, que seguro que no es coincidencia que este ahí por casualdiad.
Lo primero que voy a realizar va a ser un ataque por fuerza bruta con la herramienta Hydra probando usuarios de ese diccionario y la misma contraseña para todos ellos.
Antes de ello, vamos a intentar reducir el diccionario de tamaño por si hay palabras repetidas, esto se realiza con el siguiente comando.
cat fsocity.dic | sort -u | uniq > fsocity2.dic
hydra -vV -L Public/Dictionaries/fsocity2.dic -p password 192.168.1.69 http-post-form ‘/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=log+in:F=invalid username’
Con el anterior comando vamos probando una por una todas las palbras del diccionario como usuario, todos ellos con la misma contraseña (password), de esta forma adivinamos un usuario válido para el sistema objetivo.
Perfecto, hagamos otra vez lo mismo, pero al revés. Es decir, probamos como contraseñas las palabras de nuestro diccionario simpre con el mismo usuario (ELLIOT).
hydra -vV -P Public/Dictionaries/fsocity2.dic -l ELLIOT 192.168.1.69 http-post-form ‘/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=log+in:F=is incorrect’
Et voilá, ya tenemos un usuario y contraseña de un usuario de wordpress del objetivo (no del login de inicio).
Introduzcamos este usuario y contraseña y continuemos con nuestro acceso a root.
El siguiente paso es crear una shell remota desde wordpress a nuestro ordenador, para ello podemos descargarnos una de las muchas shell en php que existen en internet, en mi caso, he descargado la siguiente: http://pentestmonkey.net/tools/web-shells/php-reverse-shell.
La cual deberemos modificar los campos ip y port a los que nosotros decidamos.
Navegando por wordpress, apariencia, editor, podemos copiar esta shell anterior al archivo 404.php y subirlo a la web.
Antes de ejecutar esta shell debemos dejar un puerto a la escuchar en nuestro ordenador con la herramiente nc, una vez hecho esto, ejecutaremos 192.168.1.69/404 en nuestro navegador y obtendremos una shell al sistema objetivo.
Ya estamos dentro del sistema, navegando un poco encontramos dos archivos, un txt al que no tenemos acceso y una contraseña en formato md5, que podemos descifrar con algun servicio online como por ejemplo, https://www.md5online.org/md5-decrypt.html.
Obtendremos la segunda de las tres claves: abcdefghijklmnopqrstuvwxyz.
Ahora tenemos usuario (robot) y contraseña (abcdefghijklmnopqrstuvwxyz) para loguearnos en el sistema.
Muy bien, ya estamos dentro, pero seguimos sin ser root, que es nuestro objetivo principal.
Para conseguir elevar privilegios podemos buscar ejecutables del sistema objetivo con el bit SUID activo, esto quiere decir que cualquier ejecutable con este bit activo podrá ser ejecutado por todos los usuarios con el permiso del propietario, que podría ser root.
Para encontrar estos ejecutable escribimos en la temrinal:
find / -perm -u=s -type f 2>/dev/null
Como resultado vemos que el programa nmap tiene este bit activo.
Antiguas versiones de nmap permiten usarse de modo interactivo, para ello ejecutamos nmap –interactive y obtendremos una shell. Acto seguido ejecutamos !sh para salir de esta shell y movermos a otra shel del sistema con la sorpresa de que tenemos privilegios de root.
¡¡¡HACKED!!!
Pablo.