Laboratorio de seguridad · 005

Queue

Un proxy que reconstruye cabeceras y reenvía el cuerpo en crudo sobre una conexión reutilizada. El backend deja de saber dónde acaba la petición.

  • Difícil
  • Linux
  • HTTP
  • Smuggling
  • Desync
1 h por sesión2 flags por descubrir40 puntos posibles

Descripción del reto

edge escucha en el puerto 8080 y solo deja pasar /public/*: el resto exige una cabecera que no tienes. Reenvía al backend reconstruyendo las cabeceras y mandando el cuerpo en crudo por una conexión reutilizada. Detrás, core guarda las dos evidencias en rutas internas.

Tu objetivo: que el backend ejecute una petición que el proxy nunca autorizó, y sacar las dos evidencias.

La vulnerabilidad

CVE-2026-58044 (desincronización de peticiones)

El proxy recompone las cabeceras al vuelo y reenvía el cuerpo en crudo por una conexión reutilizada, sin Content-Length: el backend pierde el marco y lee el cuerpo como la petición siguiente.

Objetivos

0 / 2

User flag

20 pts

Coloca una petición dentro del cuerpo y lee /home/edge/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 borde escucha en http://<ip>:8080/. Pide /public/info y luego intenta /internal/flag.

  3. 3
    Entrega las dos evidencias

    Primero la interna; después, la de root con esa misma evidencia como ticket.

Contexto técnico

Reto propio sobre Debian 13 y Node 20. edge atiende en 0.0.0.0:8080 como el usuario edge; core escucha solo en 127.0.0.1:9091 como root.

La clase del fallo es la del aviso CVE-2026-58044 de Node.js (julio de 2026): proxies que reconstruyen las cabeceras de salida y siguen mandando el cuerpo a una conexión reutilizada, de modo que el backend desincroniza peticiones.

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.