Authentication vulnerabilities

Authentication

Authentication factors

Authentication mechanism verify one or more of the following factors:

  • Something you know (e.g. password, security question)

  • Something you have (e.g. mobile phone, security token)

  • Something you are (e.g. biometrics, behaviour)

Difference to authorization

  • Authentication: Who you are

  • Authorization: What you are allowed to do

Vulnerabilities

Password based

Username enumeration

Try to spot differences in:

  • Status codes

  • Error messages

  • Response times (use a very long password to increase the difference in response time)

  • If an account is being locked, it probably means, that account exists ;-)

Brute-force protections

Blocking IP address

  • If X-Forwarded-For header is supported, try to change it for each request.

  • Sometimes logging in to a valid account will reset your failed count.

Locking the user account

  • Password spraying: Test a lot of different usernames, with just a few common passwords, to avoid being locked out.

  • Credential stuffing: Use credentials from a breach of another site, as users often reuse their credentials.

Rate limiting

Too many login requests in a short period of time.

Multi-factor

TODO

OAuth

TODO

Other vulnerabilities

Keep users logged in

Often implemented as a "remember me" token and then stored in a cookie.

  • If the token is somehow guessable, it can be brute-forced (e.g. username:password, or username_timestamp, ...).

  • Even if you don't have a valid account for inspecting the cookie, you may be able to steal one from a valid user via XSS.

  • If the password hash is contained in the cookie and not salted, you probably can even brute-force it to gain the plaintext representation.

Reset password

A password reset url should contain a high-entropy, hard-to-guess token, that is tied to that very user account in the back-end, expire after a short period of time and be immediately destroyed after the password has been reset.

  • If just the username is provided here instead, you may just change it to any arbitrary one you like to.

Password reset poisoning

Change password

Password change pages are often affected by the same type of vulnerabilities as login pages.

  • If the username is sent via hidden field, you may be able to change it to any arbitrary username.

Last updated