Broken Authentication
User Enumeration
Identify
Different error messages for valid vs invalid usernames
"Unknown user" vs "Invalid password"
Response timing differences
Password reset returns different messages for valid/invalid users
Exploit - ffuf User Enumeration (Login Form)
ffuf -w /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt:FUZZ \
-u http://TARGET/index.php \
-X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=FUZZ&password=invalid" \
-fr "Unknown user"Exploit - ffuf User Enumeration (Password Reset)
Password reset endpoints often reveal valid usernames with different error messages.
Tip: Try both login and password reset endpoints - they may have different rate limiting or lockout policies.
Cookie as hash of username
If the session cookie looks like a hash (e.g. 32 hex chars = MD5), it may be MD5(username) or similar. Crack it to get the username:
Useful when the app identifies users by a cookie value and you need a valid username for SQLi or further attacks.
Password Brute Force
Filter Wordlist by Password Policy
Exploit - ffuf Password Brute Force
Password Reset Token Brute Force
Identify
Short numeric token (4-6 digits)
Token in URL:
?token=7351No rate limiting
Generate Token Wordlist
Exploit - ffuf Reset Token Brute Force
2FA Bypass
Identify
Short OTP (4-6 digits)
No lockout after failed attempts
No rate limiting
Exploit - ffuf 2FA Brute Force
Rate Limit Bypass
Identify
Rate limit uses
X-Forwarded-ForheaderCVE-2020-35590 pattern
Exploit - Randomize X-Forwarded-For
Security Question Brute Force
Identify
Predictable questions: "What city were you born in?"
No rate limiting on answers
Create City Wordlist
Exploit - ffuf Security Question Brute Force
Password Reset Manipulation
Identify
Hidden
usernameparameter in reset formUsername passed through all reset steps
Exploit - Change Username in Final Request
Answer YOUR security question → change username to victim in final step.
Authentication Bypass - Direct Access
Identify
Protected page returns 302 redirect but body contains content
Missing
exit;after redirect
Exploit - Burp Response Modification
Intercept → Do intercept → Response to this request
Change
302 Foundto200 OKForward response → page renders
Exploit - curl
Authentication Bypass - Parameter Modification
Identify
user_idparameter in URL after loginRemoving parameter causes redirect
Sequential/guessable IDs
Exploit
Session Token Attacks
Identify Weak Tokens
Short length (< 16 chars)
Sequential/incrementing
Static portions with small random part
Base64/hex encoded data
Decode Session Tokens
Forge Admin Token
Session Fixation
Identify
Session token set via URL parameter (
?sid=xxx)Session not regenerated after login
Exploit
Get valid session:
a1b2c3d4e5f6Send victim:
http://TARGET/?sid=a1b2c3d4e5f6Victim logs in with your session
Use
session=a1b2c3d4e5f6to hijack
Default Credentials
Resources
https://www.cirt.net/passwords
https://github.com/danielmiessler/SecLists/tree/master/Passwords/Default-Credentials
https://github.com/scadastrangelove/SCADAPASS
Common Defaults
WordPress
admin
admin
BookStack
admin@admin.com
password
Tomcat
tomcat
tomcat
Jenkins
admin
admin
phpMyAdmin
root
(empty)
Search
Cookie/Session Reuse Across Subdomains
Identify
Sometimes session cookies from one subdomain work on another subdomain of the same application, even if login on the second subdomain fails.
Scenario
You login to
intra.target.htbwith user credentialsYou discover
admin.target.htbsubdomainDirect login to
admin.target.htbfails ("not enough permissions")But the session cookie from
intra.target.htbworks onadmin.target.htb
Exploit
Login to the accessible subdomain:
Note the session cookies set:
Copy cookies to browser for the admin subdomain:
Open
admin.target.htbin browserOpen Developer Tools → Application → Cookies
Add/modify cookies from the working session:
PHPSESSID=abc123Change
DOMAINcookie fromintratoadmin
Refresh the page - you may now have access to the admin panel with the same user's elevated privileges.
Why This Works
Session is stored server-side and tied to PHPSESSID, not to the subdomain
Role/permission checks may only happen at login, not on every request
Cookies with
domain=.target.htbare shared across all subdomains
Tool-Assisted
Last updated