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
1 h por sesión2 flags por descubrir40 puntos posibles

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

0 / 2

User flag

20 pts

Escapa de la lista negra y lee la evidencia de /home/img/flag.txt.

○

Root flag

20 pts

Con esa evidencia como ticket, llega a la de root: /root/root.txt.

○

Las flags son únicas para tu sesión. Inicia la máquina para poder validarlas.

Antes de empezar

  1. 1
    Inicia la máquina

    Pulsa «Iniciar máquina». Tarda alrededor de un minuto en estar lista.

  2. 2
    Prueba el proxy

    El panel escucha en http://<ip>:8080/. Pídele una imagen y mira con qué se queda el filtro.

  3. 3
    Entrega 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.

BeriaBox

Introducción al laboratorio

Bienvenido a BeriaBox

Sesión marcada

Hemos detectado una solución asistida.

Hemos detectado el patrón: has llegado demasiado rápido y sin fallar una sola vez. La flag cuenta, pero la sesión queda marcada como asistida.

Laboratorio 001 · PHP2Shell

¡Reto completado!

Las dos evidencias son tuyas. La máquina se ha detenido.