I am publishing this without reviewing or re-reading. I apologize if you see any mistake here. Have a great day!
Introduction
Hi, I hope you are well. I am writing this blog after a long time so some of my writing skills might have faded away. Talking about skills, I've mastered one, and it is my ability to spend unlimited amount of time trying to understand every single feature of a target application. Sometimes I find a way to leverage those features into vulnerabilities other times I end up learning a lot of things from them. So, I'm using this article as a means to share one of the findings that ended up being duplicate.
Bypassing email verification step when registering new email addresses
I was looking at a bug bounty program and I found an application that allowed anyone to register and login to it. So, I created an account to poke around with the features. The first feature I looked at was the registration feature itself. When I created an account in the application, it asked me to verify my email address to continue. I tried to login after skipping the verification step, but I got the most expected error message, "You have not verified your email, please enter the code sent to your email address to continue". After this I had no plans of bypassing it, I entered the code and went ahead to test other features. However, when I logged in for the first time, application redirected me to "https://application.xyz/dashboard". I poked around and tested for basic flaws like XSS, SQL Injection, SSTI, and CSRFs in the most-common input fields you could imagine like First Name, Last Name, Email, and every single GET/POST parameters I came across. I found nothing, so I moved on to the O.G class of vulnerabilities, Broken Access Control. I attempted to create a new account to test for cross-user vulnerabilities. However instead of opening "https://application.xyz/register" to create a new account, I accidentally went to "https://application.xyz/dashboard" and it opened up a registration page. So, I created an account, but this time I was not asked for email verification but rather directly redirected to "/dashboard".
Enabling 2 Factor Authentication to lock out arbitrary unregistered email addresses
After bypassing email verification, I asked myself a question, "Can I use this for my advantage?". That's when I thought of enabling 2 factor authentication and it worked. I could enable 2 Factor Authentication for any unregistered account and lock them out using the TOTP method. User would not be able to gain access to their account even if they had changed their password because they would need TOTP token to login and that was controlled by me.
Reporting and expectations
I reported this but I kept 0 expectations because vulnerabilities like these are simple and should've already been reported by other hackers. But, just because of that I found absolutely no reason to leave them vulnerable in case this was introduced by a newly launched feature. Hence, I reported it and as expected it went Duplicate. But, I learned from it in the end and that's what matters I guess, because eventually there's high chance you'll stumble upon the same vulnerability in your other targets too.
Conclusion
Always try to take advantage of the application features and think about how a bad actor/attacker could leverage the feature to cause harm.
Comments
Post a Comment