MFA / 2FA Bypass
MFA that is checked in the UI and not on the API is not MFA. Test skip, brute, race, and backup codes.
Tags: 2fa, ato, otp, race
Level: advanced
Method
Map the flow
Login returns a temp token, then /mfa/verify, then a session. Find every endpoint that issues a real session.
Tools: Burp Suite
Skip
Call the post-MFA endpoint with the temp token. Change the JSON from mfa_required:true to false. Hit the mobile API that might not know about MFA.
Brute and rate limit
6-digit OTP is 1e6. If there is no lockout, or lockout is per-IP and you can rotate, it falls. Check backup codes too.
Tools: ffuf
Race
Submit many OTPs in one HTTP/2 burst so the counter does not keep up. Or race enable-MFA vs disable.
Tools: Burp Suite
Leaks
OTP in response body, in logs, in email preview APIs, in support tools.
Field notes
- Response manipulation is still shockingly common on SPA logins.
- If MFA is cookie-gated on www but not on api., write it as ATO.