UnderPass
UnderPass es una máquina Linux de Hack The Box donde la enumeración UDP mediante SNMP revela una instalación de daloRADIUS. Credenciales por defecto permiten acceder al panel, recuperar el hash MD5 de svcMosh y finalmente abusar de mosh-server mediante sudo para obtener root.

- Plataforma
- Hack The Box
- Sistema operativo
- Linux
- Dificultad
- Fácil
- Publicado
- Autor
- Pedro Vargas
- Temas
- Enumeration
- UDP
- SNMP
- Snmpwalk
- Community String
- Daloradius
- Default Credentials
- Md5
- Password Cracking
- Crackstation
- SSH
- Sudo L
- Mosh
- Mosh Server
- Escalamiento de Privilegios
En esta página
Resumen
UnderPass es una máquina Linux de dificultad Easy donde inicialmente solo encontramos SSH y HTTP por TCP. Al ampliar la enumeración hacia UDP descubrimos SNMP, que revela la existencia de daloRADIUS. Las credenciales por defecto del panel de operadores nos permiten recuperar y crackear el hash de svcMosh, acceder mediante SSH y finalmente abusar de un permiso sudo sobre mosh-server para conseguir una sesión como root.
Enumeración
Comenzamos realizando un escaneo completo de puertos TCP:
nmap -p- -vvv -T5 10.129.231.213
Únicamente encontramos dos puertos abiertos:
22 - SSH
80 - HTTP
Realizamos un segundo escaneo para identificar versiones y ejecutar los scripts básicos de Nmap:
nmap -p 22,80 -sVC -vvv -T5 -oA underpass_scan 10.129.231.213

El puerto 80 muestra una página por defecto de Apache y, en principio, no encontramos nada especialmente interesante.
Cuando la superficie TCP es tan limitada, vale la pena recordar que también existen servicios expuestos mediante UDP.
Enumeración UDP
Ejecutamos un escaneo contra los 100 puertos UDP más comunes:
nmap -sU --top-ports 100 10.129.58.190
Aquí aparece algo mucho más interesante:
161/udp - SNMP
Realizamos entonces un escaneo más específico:
nmap -sU -sV -p161 10.129.58.190

Tenemos SNMP expuesto.
Enumeración SNMP
Probamos la community string clásica:
public
utilizando SNMP versión 2c:
snmpwalk -v2c -c public 10.129.58.190

La consulta funciona y podemos recuperar bastante información del sistema.
Entre los resultados encontramos referencias a:
underpass.htb
y, mucho más importante:
daloRADIUS server
🎯 Ya tenemos una nueva pista.
Descubriendo daloRADIUS
Probamos directamente:
http://10.129.58.190/daloradius/

El servidor responde:
Forbidden
You don't have permission to access this resource.
Esto es diferente a recibir un 404 Not Found.
El recurso parece existir, pero Apache no permite listar o acceder directamente a ese directorio.
Sabiendo que estamos frente a daloRADIUS, revisamos la estructura del proyecto y encontramos que existen diferentes interfaces web.


Una de ellas corresponde al panel de operadores:
/daloradius/app/operators/login.php
Accedemos:
http://10.129.58.190/daloradius/app/operators/login.php
Y encontramos el formulario de autenticación.
Credenciales por defecto de daloRADIUS
La propia documentación de daloRADIUS establece unas credenciales iniciales para el panel administrativo:
administrator:radius

Probamos estas credenciales contra el panel de operadores y conseguimos entrar.
http://10.129.58.190/daloradius/app/operators/login.php

En mi caso también revisé la interfaz destinada a usuarios, pero estas credenciales pertenecen al panel administrativo de operators, por lo que es ahí donde funcionan.
Una vez dentro del dashboard comenzamos a revisar los usuarios configurados.

Obteniendo las credenciales de svcMosh
Dentro del panel encontramos un usuario:
svcMosh
junto con el siguiente hash:
412DD4759978ACFCC81DEAB01B382403
El valor corresponde a un hash:
MD5
En lugar de utilizar Hashcat, en esta ocasión simplemente lo comprobé en CrackStation:
https://crackstation.net/

El hash se resuelve como:
underwaterfriends
Tenemos entonces:
svcMosh:underwaterfriends
🔑 Ya podemos probar acceso al sistema.
Acceso mediante SSH
Nos conectamos:
ssh svcMosh@10.129.58.190
Utilizamos:
underwaterfriends
Y obtenemos una shell como:
svcMosh

Con esto ya podemos recuperar user.txt.
Ahora toca buscar una forma de escalar privilegios.
Enumeración de sudo
Una de las primeras comprobaciones es:
sudo -l

Encontramos:
(ALL) NOPASSWD: /usr/bin/mosh-server
Esto significa que svcMosh puede ejecutar:
/usr/bin/mosh-server
como cualquier usuario, incluido root, y sin proporcionar contraseña.
🎯 Nuestro vector de escalamiento está bastante claro.
¿Qué es Mosh?
Mosh, o Mobile Shell, es una alternativa a SSH diseñada para mantener sesiones interactivas estables incluso cuando cambia la conexión de red.
Su arquitectura utiliza dos componentes principales:
mosh
mosh-server
El cliente inicia mosh-server en el sistema remoto y posteriormente establece una sesión interactiva con él.
El problema en UnderPass es que podemos obligar al cliente a iniciar ese servidor utilizando:
sudo
Por lo tanto:
mosh client
↓
sudo /usr/bin/mosh-server
↓
mosh-server se ejecuta como root
↓
nuestra sesión también queda como root
Escalamiento mediante mosh-server
Buscando formas de aprovechar el permiso encontré una técnica que permite indicar qué comando debe utilizar Mosh como servidor.
https://www.hackingdream.net/2020/03/linux-privilege-escalation-techniques.html

Sobre nuestra propia sesión SSH ejecutamos:
mosh --server="sudo /usr/bin/mosh-server" localhost
La opción:
--server
permite sustituir el comando utilizado para iniciar mosh-server.
En lugar de ejecutarlo normalmente, nosotros hacemos que se lance como:
sudo /usr/bin/mosh-server
Como tenemos permiso NOPASSWD, el servidor Mosh termina ejecutándose como root.
Mosh establece automáticamente la conexión contra localhost y nos entrega una nueva sesión.

Comprobamos:
whoami
Resultado:
root

¡UnderPass completada! 🚩
Conclusiones
UnderPass es una máquina corta pero demuestra muy bien la importancia de no limitarse únicamente a TCP. La enumeración UDP revela SNMP, que termina exponiendo daloRADIUS; desde ahí unas credenciales por defecto nos llevan hasta svcMosh, y un permiso inseguro de sudo sobre mosh-server permite conseguir root prácticamente de forma inmediata.
Herramientas utilizadas
- Nmap
- snmpwalk
- daloRADIUS
- CrackStation
- SSH
- Mosh


