Laboratorio de seguridad · 003

PaperTrail

Un panel de notas con JWT, un secreto que viaja en el bundle y un agente interno que se fía de cualquiera que llame desde loopback.

  • Media
  • Linux
  • Web
  • JWT
  • SSRF
1 h por sesión2 flags por descubrir40 puntos posibles

Descripción del reto

El equipo de soporte tiene un panel de notas en el puerto 8080: te registras sin contraseña, recibes un JWT y lees tus notas. Detrás hay dos endpoints de administración y un agente de copias que escucha en loopback y no comprueba nada. El secreto de firma, por cierto, viaja en el fichero que tu navegador descarga al entrar.

Tu objetivo: leer /home/desk/flag.txt como el servicio y /root/root.txt a través del agente.

La vulnerabilidad

CVE-2026-18353 (SSRF con bypass de lista blanca de emisor)

El secreto de firma viaja en el bundle, el rol del JWT no se contrasta con la base y el servicio interno se fía de cualquier petición que llegue por loopback: se valida con un criterio y se conecta con otro.

Objetivos

0 / 2

User flag

20 pts

Llega a los endpoints de administración y lee /home/desk/flag.txt.

○

Root flag

20 pts

Usa el agente interno y lee /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
    Abre el panel

    Cuando arranque, tendrás una IP pública. El panel escucha en http://<ip>:8080/. Entra, regístrate y mira el fichero /static/app.js.

  3. 3
    Entrega las dos evidencias

    Primero la del servicio; después, la de root a través del agente.

Contexto técnico

Reto propio sobre Debian 13: dos servicios Python. tokend atiende en 0.0.0.0:8080 como el usuario desk; el agente de copias escucha solo en 127.0.0.1:9090 como root.

La clase del fallo es la de CVE-2026-18353 (SSRF con bypass de la lista blanca de emisor OIDC, julio de 2026): se valida una URL con un parser y se conecta con otro, y el token se cree su propio rol. Se suma el secreto de firma servido en el bundle.

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.