Laboratorio de seguridad · 004
Fullwidth
Un proxy de imágenes con lista negra de destinos. El filtro compara texto; el parser de URL de Node normaliza lo que el filtro no ve.
- Media
- Linux
- Node
- SSRF
- Bypass
Descripción del reto
imgproxy escucha en el puerto 8080 y descarga imágenes desde images.internal. Su lista negra bloquea 127.0.0.1, localhost y el rango de metadatos, pero la comprueba sobre el texto que llega. Detrás, en loopback, hay un servicio que guarda las evidencias y que no debería ser accesible desde fuera.
Tu objetivo: alcanzar el servicio interno y sacar las dos evidencias, cada una en el home de su usuario.
La vulnerabilidad
CVE-2026-105483, CVE-2026-106069 y CVE-2026-50168 (verificación de destino)
El proxy compara el texto de la URL contra una lista negra mientras el cliente normaliza la misma dirección antes de conectar: 127.1, 2130706433 o 0x7f000001 pasan el filtro y llegan a loopback.
Objetivos
User flag
20 ptsEscapa de la lista negra y lee la evidencia de /home/img/flag.txt.
Root flag
20 ptsCon esa evidencia como ticket, llega a la de root: /root/root.txt.
Reto completado
Las flags son únicas para tu sesión. Inicia la máquina para poder validarlas.
Antes de empezar
- 1Inicia la máquina
Pulsa «Iniciar máquina». Tarda alrededor de un minuto en estar lista.
- 2Prueba el proxy
El panel escucha en
http://<ip>:8080/. Pídele una imagen y mira con qué se queda el filtro. - 3Entrega las dos evidencias
Primero la del servicio interno; después, la de root con esa misma evidencia como ticket.
Contexto técnico
Reto propio sobre Debian 13 y Node 20. imgproxy atiende en 0.0.0.0:8080 como el usuario img; el depósito de evidencias escucha solo en 127.0.0.1:9091 como root.
La clase del fallo es la de los avisos CVE-2026-105483 y CVE-2026-106069 (Node.js, octubre de 2026): comprobaciones de destino que no tienen en cuenta las grafías no estándar de una misma dirección IP. Es la misma familia que CVE-2026-50168 (Angular SSR, junio de 2026), donde la lista blanca y el cliente usan parsers distintos.