HackTheBox - Expressway
Creado
Entorno Linux nivel fácil. Movimientos con el protocolo IKE, credenciales volando, logs y hostnames.

💥 Laboratorio creado por: dakkmaddy.
TL;DR (Spanish writeup)
La seguridad ante todo, ¿si oke?
Vamos a encontrar el servicio IKE expuesto, nos adentraremos en su mundo agresivamente para obtener un usuario y romper la llave compartida PSK, en conjunto formaremos unas credenciales y las usaremos para obtener una sesión como el usuario ike en el sistema.
Internamente encontraremos unos archivos de squid y dentro de uno de ellos un subdominio. Jugando con permisos y hostnames, encontraremos accesos administrativos en el sistema.
…
Clasificación de la máquina según la gentesita

Debemos ensuciarnos las manos y enumerar un montón.
La idea inicial de esta locura es tener mis “notas” por si algun día se me olvida todo (lo que es muuuy probable), leer esto y reencontrarme (o talvez no) 😄 La segunda idea surgio con el tiempo, ya que me di cuenta que esta es una puerta para personitas que como yo al inicio (o simplemente a veces) nos estancamos en este mundo de la seguridad, por lo que si tengo la oportunidad de ayudarlos ¿por qué no hacerlo?
Un detalle es que si ves mucho texto, es por que me gusta mostrar tanto errores como exitos y tambien plasmar todo desde una perspectiva más de enseñanza que de solo pasos a seguir. Sin menos, muchas gracias <3
…
Los pergaminos.
…
Reconocimiento #
Empezamos como siempre, descubriendo que servicios (puertos) tiene expuestos la máquina que vamos a atacar, para ello usamos la herramienta nmap:
nmap -p- --open -v 10.129.134.213 -oA tcp-all-htb_expressway
| Parámetro | Descripción |
|---|---|
| -p- | Escanea todos los 65535 puertos |
| –open | Devuelve solo los puertos que estén abiertos |
| -v | Permite ver en consola lo que va encontrando |
| -oA | Guarda el output en diferentes formatos, entre ellos uno “grepeable”. Lo usaremos junto a la función extractPorts de S4vitar para copiar los puertos en la clipboard rápidamente |
El escaneo solo nos devuelve el puerto 22:
| Puerto | Descripción |
|---|---|
| 22 | SSH: Servicio que permite la obtención de una terminal de forma segura |
Pero tener solo este puerto es raro, ya que si no encontramos una vulnerabilidad específica para ese SSH o realizamos brute-force (y eso que aún no tenemos usuarios válidos) de credenciales, pues no hay pa donde darle más.
Eso me hizo pensar en que acabamos de hacer un escaneo TCP, pero y si hacemos uno UDP? A ver…
Los protocolos TCP y UDP estan encargados de transportar información mediante la red, el tema es que TCP busca mover la info de forma clara y sin errores, con UDP es lo contrario, ahí se busca rapidez sin importar la integridad de la información (entre otras muchas más caracteristicas).
Apoyados de nmap también podemos realizar ese escaneo:
sudo nmap -sU -p- --open -v --min-rate=5000 10.129.134.213 -oA udp-all-htb_expressway
| Parámetro | Descripción |
|---|---|
| -sU | Indicamos que queremos un escaneo por UDP |
| –min-rate | Este escaneo es lento, con esto podemos indicarle cuantos paquetes enviar por petición |
Obtenemos nueva infoooooooooo:
| Puerto | Descripción |
|---|---|
| 500 | IKE: Servicio que permite establecer conexiones VPN de forma segura |
| 53553 | no lo sabemos con seguridad |
Ihsss, lindo, ahora si tenemos de donde empezar a cocinar.
Enumeración #
¿IKE? 📌
Como ya vimos, es un protocolo que permite una conexión segura entre redes virtuales privadas (VPN):
- https://www.quora.com/What-is-the-UDP-500-used-for
- https://www.cbtnuggets.com/common-ports/what-is-port-500
- CISCO - Comprensión del protocolo IPsec IKEv1 (completísimo, te recomiendo leerlo)

Nos ponemos a investigar, a ver como podemos jugar…
Explotación #
¿IKE? ¿Rompemos o ke? 📌
Llegamos a esta gran guía:

Como vemos, el protocolo IKE inicialmente tiene dos fases, la primera es para establecer la conexión segura y la segunda es para empezar a transportar la información, en la primera fase se usan dos métodos para el intercambio de llaves, el modo principal y el modo agresivo, la guía explorara el modo agresivo.

Como notamos, el modo agresivo intenta responder con una llave compartida y otros datos para la generación de la sesión. Nuestro enfoque será intentar obtener esa llave y si esta no es robusta, obtener el resultado en texto plano de ella.
Explorando sobre esa llave, encontramos:


Así que con más razón vamos tras ella.
Lo primero que nos indica la guía es instalar la herramienta ike-scan para descubrir más información del servicio y en pasos posteriores intentar extraer la llave:
./ike-scan 10.129.134.213 -M -A
-Mpara que nos imprima la información en varias lineas y-Apara que use el modo agresivo

10.129.134.213 Aggressive Mode Handshake returned
HDR=(CKY-R=306bd5ea590fe122)
SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
KeyExchange(128 bytes)
Nonce(32 bytes)
ID(Type=ID_USER_FQDN, Value=ike@expressway.htb)
VID=09002689dfd6b712
VID=afcad71368a1f1c96b8696fc77570100
Hash(20 bytes)
Vemos que efectivamente existe un hash en formato SHA1 y también obtenemos el usuario ike.
Agresivamente, nos robamos cosas 📌
Guardamos el hash en un archivo:
./ike-scan/ike-scan 10.129.134.213 -A --pskcrack --pskcrack=ike.psk

Ahora la idea es usar la herramienta psk-crack para intentar descubrir el valor en texto plano del hash, si la herramienta genera un hash idéntico al que tenemos, ya tendríamos el origen del hash:
./ike-scan/psk-crack -d /usr/share/wordlists/rockyou.txt ike.psk
Con
-dle indicamos el diccionario de palabras para que la herramienta vaya probando y generando los hashes

key "freakingrockstarontheroad" matches SHA1 hash f27f15b6c4bdabb8aaf1db91549079c72c734f9d
¡OBTENEMOS EL VALOOOOOOR!!!
Ya con eso, lo único que se nos ocurre es pensar en el servicio SSH, ya que tenemos un usuario y el resultado de una llave, quizá ese usuario usó ese valor como credencial:
ike : freakingrockstarontheroad

Tamoooos dentrooo (:)
Escalada de privilegios #
Despues de probar demasiadas cosas (enserio, muchas) y perderme en temas relacionados a squid (ya hablaremos de esto), tftp, capabilities, logs y otras, encontramos el camino…
Cache-ando y log-eando 📌
Estos son los grupos que tiene asignados el usuario ike:

El grupo proxy es distinto a lo normal, buscando archivos relacionados a ese grupo (a los cuales ike tendría acceso) encontramos:
find / -group proxy -ls 2>/dev/null

Jmm, archivos relacionados con el servicio Squid, el cual actúa como un proxy enfocado en temas de caché. Si recorremos los archivos, existe un log en el que alguien intentó acceder a un subdominio:

¿Lo encontraste?
offramp.expressway.htb
Y acá fue donde me re perdí y me puse a divagar :P Es que pensé, “pues tengo un subdominio, pero no tengo un sitio web, ¿qué hagooooo?”, y lo que hice fue perderme fklasdjfl, pero bueno…
Una vez tenemos el subdominio, nos lo guardamos, es info importante, pero aún no lo sabemos ;)
¿Sudas? 📌
Siguiendo con mis pruebas, se me hizo raro encontrar dos objetos sudo en el sistema (que nos permite ejecutar acciones privilegiadas sobre otros usuarios):


Pero es que el sistema por default ya tiene uno en la ruta /usr/bin/sudo, si revisamos, son versiones distintas:

:O
Esto me pone a dudar y me lleva a buscar posibles vulnerabilidades relacionadas con la versión más vieja, encontramos:
- https://nvd.nist.gov/vuln/detail/CVE-2025-32462
- CVE-2025–32462: How a 12-Year-Old Sudo Bug Lets You Become Root Where You Shouldn’t
Un bug para bypasear restricciones relacionadas con hostnames, o sea, si tenemos (por ejemplo) estos dos hostnames:

En la vuln, un usuario podría ejecutar comandos en prod-server pretendiendo estar en dev-server.
Solo queeeeeeeee, en lugar de enfocarnos en la vuln, nos enfocamos en el tema “hostnames”, ya que está interesante y es algo que no había probado y realmente no sabía.
Previamente, encontramos el subdominio offramp.expressway.htb y ahora estamos sobre expressway.htb, ejecutando sudo -l contra expressway.htb para ver si tenemos permisos sobre otros usuarios, el sistema responde que no señorito. PEEEEERO, llegó el gran PERO, ¿y si probamos contra el subdominio (como si fuera un hostname)?
/usr/local/bin/sudo -l -h offramp.expressway.htb
/usr/bin/sudo -l -h offramp.expressway.htb
sudo -l -h offramp.expressway.htb

JAAAAY!!! ¡Nuestro subdominio era un hostname y tenemos permisos de ejecución total sobre ese hostname como cualquier usuariooooooOOOOOO!
Levantemos una terminal como root:

Y tamos finos :P
Post-Explotación #
Flags 📌

…
Listones, una máquina sencilla, pero que puede llegar a ser locura. Me gustó el tema de IKE y su seguridad, el meternos en el tema y aprender.
Por ahora es todo, nos leeremos otro día, muchas gracias 💖
Abrazoooooos y a seguir rompiendo de todooooo!!
Comments