Home / Knowledge hub / Account takeover
Knowledge hub
Account takeover
An attacker ends up signed in as one of your real users.
What it means
Account takeover means an attacker ends up signed in as one of your users. No clever exploit is required. A reused password does it. So does a reset link that never expires. So does a session that outlives a logout, or a code an attacker can request forever.
Your application sees nothing wrong. The requests carry correct credentials and come from a real account, which is exactly why nobody notices.
Why it matters
The account itself is rarely the cost. The data it reads and the actions it takes are: the refunds it issues, the exports it downloads, the colleagues it invites. One support login is worth more to an attacker than a thousand customer ones.
Warning is thin. Nothing alarms on a correct password used by the wrong person. The first signal tends to be a customer asking why their address changed. By then you are not fixing a bug, you are reconstructing what a legitimate session did.
How it shows up
Look at the edges of the login rather than the login itself. Does a reset token work twice? Does an email change ask for the current password? Does the session survive a password change? Can someone skip a second factor by replaying the step before it?
Those answers sit in the reset and session flows, not in the password policy everyone argues about.
Then check what an account can reach once somebody is inside. A support login that exports every customer is a different problem from a customer login that exports one. We test each flow as its own path and hand over the request that worked.
Questions people ask
Account takeover, answered
How would we even know an account had been taken over?
Usually you would not, at least not from the login itself. The request authenticates correctly and looks like every other one.
The signals arrive later and from elsewhere: a changed email address, an export nobody ordered, a customer asking about a payment. An audit log that records reads as well as writes turns those hints into an answer.
Why does everything fall back to email?
Because almost everyone has an inbox, and your reset flow trusts it. That quietly makes the mailbox the real credential for your product.
It is a practical choice rather than a good one. If email is your recovery route, treat a mailbox compromise as a full takeover of everything downstream.
If we have two factor authentication, does the reset flow still matter?
Yes, and reset is often where it falls down. A flow that signs the user straight in after a reset, without asking for the second factor, has made the second factor optional.
OWASP treats forgotten password as a security mechanism in its own right, with its own token rules and its own enumeration risks.
Can an attacker get past two factor authentication?
Some forms of it, yes. A code typed into a convincing fake page works for the attacker within its short life. A push prompt sent over and over at two in the morning eventually gets approved by a tired person.
OWASP still calls multi-factor authentication the best defence against most password-related attacks. Keep it, and treat it as a strong lock rather than a sealed door.
Is account takeover the same as credential stuffing?
They overlap. Credential stuffing is one route in: replaying username and password pairs leaked from somewhere else. Password spraying is another, trying one common password across many accounts.
Account takeover is the outcome. Stuffing, spraying, a weak reset flow or a stolen session are all ways of getting there.
Related
Terms that sit next to this one
Credential stuffing
Trying passwords leaked elsewhere, because people reuse them.
Session hijacking
Stealing the token that tells your application a browser is logged in.
MFA
A second proof beyond the password, usually a code or a hardware key.
Brute force
Trying passwords or codes over and over until one of them works.
Authentication
Proving you are who you say you are. It answers one question only.
Could someone sign in as them?
We test the flows around your login: reset, email change, sessions after logout, skipped second factors. Each finding arrives with the request that worked. A 30 day pilot on one app is $199.
Or start with a $199 pilot on one application: thirty days, success criteria agreed before day one, credited against the annual if you convert.