BBLABSBBLABS
LaboratoriosAprender desde 0FuncionesPreciosTestimoniosDetrás de BBLABS
  1. Inicio
  2. Labs
  3. 0-click-ATO — Account Takeover via OTP Brute Force + Email Case-Sensitivity Bypass
Insane1h

0-click-ATO — Account Takeover via OTP Brute Force + Email Case-Sensitivity Bypass

Por @gorka

Exploit a case-sensitive OTP tracking system to brute-force the admin password reset

$600

Es lo que una empresa pagó por este fallo en YesWeHack. Aquí lo tienes reconstruido para que lo encuentres tú.

679 visitas18 completadosActualizado sept 2026
Iniciar sesión para empezar

Aprende a encontrar este bug

Este bug pagó $600 en YesWeHack.

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· 8

flyingwhales1
@flyingwhalesago 2026
telecasacasa452
@telecasacasa45jul 2026
zynap3
@zynapjul 2026
kaneki
@kanekijul 2026
AL
@alex.burja.2000jul 2026
benjaminnocervigni
@benjaminnocervignijun 2026
gorka
@gorkajun 2026
pl4nkton
@pl4nktonjun 2026

Objetivos

1
Discover the admin account
2
Identify the vulnerability in the password reset flow
3
Write a Python3 exploit script to brute-force the OTP
4
Take over the admin account and capture the flag

Información

Plataforma
YesWeHack
Dificultad
Insane
Duración
1h
Bounty
$600
Completados
18
Creador
gorka@gorka
Colaboradores
antoniorivera@antoniorivera
Actualizado
sept 2026

Descarga el entorno

Reprodúcelo y encuentra el bug tú mismo

Crear cuenta

Herramientas

BurpSuitePython

Prerequisitos

  • Python3 with `requests` library
  • Basic understanding of HTTP APIs
  • Understanding of brute-force attacks

Tags

API Abuse

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.

Deployment

# Using autodeploy
bash autodeploy.sh

# Or manually
docker compose up --build -d

Access the lab at: http://localhost:1337

Attack Chain

1. Login as user@securecam.io
2. Use "Invite to Camera Group" to discover admin@securecam.io
3. Analyze password reset flow:
   - POST /api/auth/forgot-password → generates 4-digit OTP
   - POST /api/auth/reset-password → email + new_password + otp
   - 4 failed attempts → email blocked
4. Discover: OTP tracking is case-sensitive, password reset is case-insensitive
5. Write Python3 exploit:
   - Generate email case variants (admin@, Admin@, aDmin@, etc.)
   - For each variant: request OTP → try 4 codes → move to next variant
6. Run exploit → password reset → login as admin → flag

Vulnerability Details

The server stores OTP attempts using the exact email string as the key (case-sensitive).
After 4 failed attempts for a specific email string, it is blocked.

However, the actual user lookup for password reset uses LOWER(email) = LOWER(?),
meaning all case variants of the email update the same user's password.

This means each case variant of the admin email (e.g., Admin@securecam.io, aDmIn@securecam.io)
gets its own 4 fresh OTP attempts, effectively bypassing the rate limit.

With 16 alphabetic characters in admin@securecam.io, there are 2^16 = 65,536 possible case variants,
each with 4 attempts = 262,144 total attempts, far exceeding the 10,000 possible 4-digit OTP codes.

Remediation

  1. Normalize email before OTP tracking: Convert to lowercase before storing in the OTP rate-limit store
  2. Global rate limiting: Implement rate limiting based on the normalized email, not the raw input
  3. Longer OTP codes: Use 6+ digit codes to increase the keyspace
  4. Account lockout: Lock the actual account after N failed reset attempts (not just the email variant)
  5. Time-based OTP expiration: Expire OTPs after a short window (e.g., 5 minutes)

Interactive Writeup

Access the step-by-step interactive writeup at: http://localhost:1337/writeup

Attribution

Bug Bounty Labs by @_.gorkaaa.b

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.