June 6, 2026
๐ Hall of Fame Unlocked: Bypass Authentication
LinkedIn:- https://www.linkedin.com/in/vansh-rathore-cybersecurity?utm_source=share_via&utm_content=profile&utm_medium=member_android
Vanshrathore
3 min read
Balancing CSE coursework with late-night bug hunting always makes for an interesting schedule, but hitting a Hall of Fame makes the grind completely worth it! ๐
Recently, I was hunting on a target (let's call it example.com) and decided to dive deep into their authentication mechanisms. I always emphasize to other hunters in our community that relying solely on automated scanners will make you miss the most critical business logic flaws. You have to get your hands dirty and understand how the application actually thinks.
Here is the full breakdown of how I chained an Insufficient Rate Limiting vulnerability with HTTP Response Manipulation to completely bypass their email verification process, earning a Certificate of Appreciation and a spot on their Security Acknowledgements page. ๐ก๏ธ๐ป
๐ฏ The Target & The Recon
While poking around example.com, I navigated to their standard signup portal at [https://admin.example.com/signup].
The onboarding flow was standard:
- Enter an email address.
- The server sends a 6-digit OTP to that email, valid for 10 minutes.
- Enter the OTP to verify the email and access the dashboard.
At first glance, it looked secure. But as a bug hunter, whenever I see a 4- or 6-digit OTP, my immediate thought is: Is there a rate limit?
โ๏ธ The Attack Chain: Intruder Meets Response Manipulation
To test the endpoint, I entered a random, incorrect 6-digit number (111111) into the verification field and intercepted the POST /api/auth/complete-signup request using Burp Suite.
Step 1: Testing for Rate Limits
I sent the intercepted request to Burp Intruder to see if the server would block me after a few failed attempts. To strictly adhere to the program's "Minimize Impact" policy and avoid causing a Denial of Service (DoS), I didn't blast the server with thousands of requests. I simply configured a numbers payload to test a small range of 200 numbers where I knew the correct OTP was hidden.
I fired up the attack. Attempt 1โฆ 400 Bad Request. Attempt 50โฆ 400 Bad Request. Attempt 100โฆ 400 Bad Request.
No 429 Too Many Requests. No account lockout. The endpoint had absolutely zero rate limiting.
Step 2: Extracting the Golden Ticket (JWT)
Because the endpoint lacked rate limits, my Intruder payload eventually hit the correct OTP. Instead of the standard 400 Bad Request, the server returned an HTTP/2 200 OK with a larger content length (~1370 bytes).
Looking closely at that 200 OK response, I found exactly what I needed: a brand new, fully valid JSON Web Token (JWT) issued by the server for that session.
Step 3: Response Manipulation
Having the JWT is great, but I needed to prove I could hijack the actual browser session.
I went back to my proxy and intercepted the server's response to my original failed 111111 request. The server was trying to send a 400 Bad Request back to my browser to tell it the OTP was wrong.
I right-clicked, chose to intercept the response, and manually modified it:
- Changed the HTTP status from
400 Bad Requestto200 OK. - Swapped out the failure JSON body with the successful JSON body I extracted from Intruder (which contained the valid JWT).
I forwarded this manipulated response to my browser. The frontend completely trusted the injected response, accepted the JWT, bypassed the email verification screen entirely, and dropped me right into the authenticated onboarding dashboard! ๐
๐ฅ The Impact
A 6-digit OTP has exactly 1,000,000 possible combinations. Because the code was valid for 10 minutes and there were no rate limits, an attacker could easily script an attack to guess the correct code within the time window.
By chaining the lack of rate limits with response manipulation, a malicious actor could completely bypass the email verification mechanism, allowing them to register unauthorized accounts and bypass intended access controls.
๐ Takeaways for Fellow Hunters
- Scanners Miss Logic: Automated vulnerability scanners won't catch this. This exploit required understanding the authentication flow, manipulating the response, and manually injecting a valid token. Always test business logic!
- Read the Policy: I stopped my Intruder attack at 200 requests. Had I blasted the server with 10,000 requests, I might have violated their out-of-scope rules regarding DoS attacks. Prove the concept, document it clearly, and stop.
- PGP is Your Friend: When dealing with authentication bypasses, the method is highly sensitive. Encrypting the report and the video PoC using the company's PGP key ensures responsible and secure disclosure.
๐ Conclusion
I promptly reported this to the example.com security team. They were incredibly professional, acknowledged the report swiftly, and deployed a remediation patch to secure the endpoint.
As a token of gratitude, they awarded me a Certificate of Appreciation and featured me on their Hall of Fame page!
Always learning, always hunting. On to the next target! ๐ฏ
If you enjoyed this write-up, feel free to connect with me on LinkedIn and let's talk cybersecurity!
#BugBounty #CyberSecurity #EthicalHacking #InfoSec #VulnerabilityDisclosure #HallOfFame #BurpSuite #VAPT