BBLABSBBLABS
LaboratoriosAprender desde 0FuncionesPreciosTestimoniosDetrás de BBLABS
  1. Inicio
  2. Labs
  3. Escalada de cuenta gratis a Premium en una plataforma de streaming por cuatro fallos combinados
Media45 min

Escalada de cuenta gratis a Premium en una plataforma de streaming por cuatro fallos combinados

Por @gorka

Una cuenta gratis alcanza el contenido Premium por cuatro vías: mass assignment del plan, muro de pago solo en cliente, endpoint de stream sin validar plan y race condition en el cupón.

Este hackeo se reportó sin recompensa

285 visitas4 completadosActualizado nov 2026
Iniciar sesión para empezar

Aprende a encontrar este bug

Un hackeo real de HackerOne, reproducido para que lo practiques.

Crea tu cuenta y practica bugs reales que se pagaron. Descarga el entorno, encuéntralo y aprende la técnica exacta — tu camino a tu primer bounty.

650

hunters entrenando

50

labs de hackeos reales

380

completaciones

$12.000

pagados por estos bugs

40 flags capturadas esta semana
Crear cuenta
Ya tengo cuenta

Acceso a todos los labs · sin permanencia · cancela cuando quieras

Hackers que lo han resuelto· 4

emperador1
@emperadorHace 19 días
benjaminnocervigni2
@benjaminnocervigniHace 19 días
3nk13
@3nk1Hace 22 días
kaneki
@kanekiHace 23 días

Objetivos

1
Comprobar que la cuenta demo arranca en plan gratis y el contenido Premium está bloqueado.
2
Mass assignment: subir tu plan a premium enviando un campo extra al guardar el perfil.
3
Ver que el muro de pago vive solo en el cliente: la respuesta ya trae canWatch y el stream.
4
Leer la marca de agua del Original directamente de la respuesta de la ficha del título.
5
Comprobar que el endpoint de reproducción sirve el máster sin validar el plan.
6
Explotar la race del cupón para dejar el total en 0 € y activar Premium sin pagar.
7
Capturar la flag: la marca de agua exclusiva del Original Premium.
8
Descartar los decoys (saldo del monedero, cupón de un solo uso 'legítimo').

Información

Plataforma
HackerOne
Dificultad
Media
Duración
45 min
Bounty
Sin recompensa
Completados
4
Creador
gorka@gorka
Actualizado
nov 2026

Descarga el entorno

Reprodúcelo y encuentra el bug tú mismo

Crear cuenta

Herramientas

curlBurp SuiteNavegador webPython

Prerequisitos

  • Planes de pago en SaaS
  • HTTP y APIs REST
  • Race conditions

Tags

PrivescBusiness LogicRace ConditionInformation Disclosure

Logro que recibirás

Cuando resuelvas este lab desbloqueas este logro compartible

Cuando resuelvas este lab desbloqueas este logro compartible

Writeups de la comunidad

Gratis · sin cuenta

La checklist que repaso en cada objetivo nuevo

47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.

Te das de baja en un clic, desde cualquier correo.

Contenido del lab

Escenario

Streamia es un clon de una plataforma de vídeo por streaming. El catálogo tiene títulos gratuitos y Originals exclusivos del plan Premium (4K + HDR). Cada Original lleva incrustada una marca de agua forense en su máster: esa marca es el secreto del estudio y la flag del laboratorio.

Entras con la cuenta de demostración demo@streamia.test / password123, que está en plan gratis. Tu objetivo es reproducir un Original Premium (o filtrar su marca de agua) sin pagar.

Qué tienes

  • La cuenta demo en plan gratis (es tu punto de partida, no es la vulnerabilidad).
  • El catálogo con fichas de título, un reproductor, tu perfil y una pasarela de pago con cupones.

Guía paso a paso (cualquiera de las 4 vías da la flag)

  1. Recon. Abre un Original: la app te muestra un muro de pago ("necesitas Premium"). Fíjate en las peticiones que lanza la ficha del título en el proxy.

  2. Vía 1 — Mass Assignment. Guarda tu perfil (POST /api/account). El endpoint vuelca sobre tu usuario cualquier columna que envíes salvo unas pocas protegidas. Añade "plan":"premium" al cuerpo → tu cuenta pasa a Premium y ya puedes reproducir los Originals.

  3. Vía 2 — Gating solo en el cliente. La ficha (GET /api/titles/:id) trae el veredicto canWatch y, en los Originals, el objeto stream con la marca de agua, aunque canWatch sea false. El muro lo pinta el navegador; el dato ya viajó. Intercepta la respuesta y cambia "canWatch":false → true, o lee la marca de agua directamente del JSON.

  4. Vía 3 — API que no valida el plan. El endpoint de reproducción (GET /api/titles/:id/hls) sirve el máster del Original (con su watermark) sin comprobar tu plan. Una cuenta gratis lo llama directamente y obtiene el stream.

  5. Vía 4 — Race del cupón. Crea un pedido Premium y aplica el cupón de descuento muchas veces en paralelo: entre la comprobación de "cupón ya aplicado" y el registro hay una espera antifraude, así que el descuento se acumula hasta dejar el total en 0 €. Paga → Premium gratis.

  6. Captura la flag. Por cualquiera de las 4 vías obtienes la marca de agua del Original: FLAG{…}.

Canales de feedback (no vuelas a ciegas)

  • El muro de pago te dice explícitamente que el título es Premium.
  • La respuesta de la ficha muestra canWatch y, en los Originals, el bloque stream — puedes ver el dato aunque el muro lo oculte.
  • Tras el mass assignment o la race, GET /api/auth/me confirma tu nuevo plan.

Decoys (descártalos por razonamiento)

  • El monedero de la cuenta demo está a 0 €: pagar "a las buenas" no funciona; la única vía de pago gratis es la race.
  • El cupón parece de un solo uso por pedido (coupon_applied), pero la ventana TOCTOU rompe esa garantía.
  • La cuenta demo en gratis no es el fallo: es el estado de partida.

La falla del laboratorio

Clases: Mass Assignment (CWE-915), confianza en control de cliente (CWE-602), falta de autorización en un endpoint de contenido (CWE-284) y TOCTOU / race condition (CWE-362), todo al servicio de una escalada de privilegios de plan (CWE-269). OWASP A01:2021 (Broken Access Control) + A04:2021 (Insecure Design).

El patrón común es confiar la autorización a la capa equivocada: el plan se puede reescribir desde el perfil, el muro de pago se decide en el navegador, el máster se sirve sin re-comprobar el plan, y la unicidad del cupón no es atómica. La defensa correcta es una lista blanca explícita de campos editables, decidir el acceso en el servidor y no enviar contenido que el usuario no puede consumir, revalidar el plan en cada endpoint de contenido, y hacer la aplicación del cupón atómica e idempotente con recálculo del total con tope >= 0.

Laboratorio basado en la reproducción anonimizada (empresa ficticia Streamia) de técnicas reales de bug bounty de escalada de plan.

La comunidad

Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.

Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Entrar a la comunidad de BBLABS en Discord
Entrar al Discord

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.

BBLABS LogoBBLABS

Laboratorios de hacking basados en hackeos reales. Aprende practicando sobre entornos vulnerables, con la resolución explicada paso a paso.

Producto

  • Funcionalidades
  • Precios
  • Labs
  • Aprender desde 0
  • Blog
  • Detrás de BBLABS

Legal

  • Términos
  • Privacidad
  • Cookies
  • Entrar
  • Crear cuenta

Para cualquier duda, bug, soporte o sugerencia puedes escribir a team@bblabs.es

© 2026 BBLABS. Todos los derechos reservados.