Nivel AvanzadoPremiumbounty: $3500

Client-side admin bypass — boolean manipulation + BAC en SPA moderna

Report real Quora: SPA con isAdmin boolean en localStorage que controla UI + backend que no valida server-side. Cómo encadenar boolean flip con BAC para admin takeover.

Gorka El Bochi11 de mayo de 202613 min

Deja de leer sobre bugs y empieza a cazarlos

Sin tarjeta · Academy gratis · cancela cuando quieras

Crear cuenta gratis

Respuesta rápida

SPAs modernas (React, Vue, Svelte) reciben flags como isAdmin: false desde el servidor y los usan para condicionar qué UI mostrar. El bug: si los flags también determinan si se permite ejecutar las acciones admin server-side (en lugar de chequear el rol real del JWT), basta con flipear el boolean en la response para desbloquear el panel admin entero. Quora pagó $3,500 (H1 #3567641) por exactamente esto — 30+ flags, UserAdminLogPaginationQuery ejecutable con sesión normal, GraphQL admin map completo. El patrón aparece en 80%+ de admin panels de SaaS Series A/B.


1. La clase de bug: client-side enforcement

CWE-602 "Client-Side Enforcement of Server-Side Security". La arquitectura vulnerable:

arduino
[Server] ──"isAdmin: false"──→ [Client React]
                                       │
                                       ▼
                            if (isAdmin) <AdminPanel/>
                                       │
                                       ▼ user clicks button
                            POST /admin/delete-user
                                       │
                                       ▼
                          [Server] ✅ procesa sin chequear rol

El frontend gating es solo UX. Si el server no re-valida el rol antes de ejecutar acciones, el atacante:

  1. Manipula la response para que el frontend renderice los controles admin.
  2. Usa esos controles para invocar las acciones.
  3. El server las ejecuta porque "creía" que solo el frontend admin las podía llamar.

2. Detección — el script de 6 líneas

Cuando llegas a un target y haces login con cuenta normal, pega esto en DevTools Console:

javascript
// Detect client-side admin flags in initial state
const text = document.documentElement.innerHTML;
const matches = text.match(/"(is[A-Z]\w+|can[A-Z]\w+|enable\w+|allow\w+)":\s*(true|false)/g) || [];
const interesting = matches.filter(m => /admin|debug|internal|dev|super|test|moderat/i.test(m));
console.table(interesting.map(m => m.replace(/[":,\s]/g, " ").trim().split(" ")));

Si la tabla tiene 5+ flags con admin/debug/internal/moderat en el nombre y todos a false → vulnerable a este bypass con alta probabilidad. Si tiene 30+ → es el report del año.

Real-world output (Quora caso 2026)

arduino
isAdminMode               false
isAdmin                   false
tribes_super_admin        false
isAdminLogTab             false
isDevCode                 false
isCanaryRevision          false
debugToolsEnabled         false
isMemberQuoraEmployee     false
EnableSubscriptionsDebugMode  false
... (30+ flags adicionales)

Sigue leyendo el chain completo

La parte que falta incluye el PoC paso a paso, código de explotación y la cadena completa que llevó al impacto. Disponible para suscriptores.

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.

Practica esto en un lab

Client Side Admin Bypass

Resolver

Sigue aprendiendo · cuenta gratis

Guarda tu progreso, desbloquea payloads avanzados y rankea tus flags.

Crear cuenta

Artículos relacionados

2.786

hunters entrenando

63

labs de hackeos reales

1.767

completaciones

$14.790

pagados por estos bugs

37 flags capturadas esta semana·Hackeos reales de HackerOne · YesWeHack · Bugcrowd·Sin permanencia·Academy gratis

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.