hunt-forgot-password
Helps your agent find flaws in account recovery. It ensures the password reset process is secure.
What it does
This tool helps check if a website's password recovery function is secure. It tests if it's easy for an attacker to discover user account information or gain unauthorized access through password recovery.
When to use it
- ✓When testing a website's security with permission.
- ✓To check if password recovery can be used to steal accounts.
- ✓To find flaws in how sites handle forgotten passwords.
Example of what to ask your AI
“Check password recovery security on example.com”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool sends different types of requests to the password recovery page. It compares the responses to see if it can discover which emails exist or if a recovery code can be reused or easily obtained.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill hunt-forgot-passwordOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/hunt-forgot-password/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
⚠️ AUTHORIZED USE ONLY This skill is for educational purposes or authorized security assessments only. You must have explicit, written permission from the system owner before using this tool. Misuse of this tool is illegal and strictly prohibited.
Mandatory confirmation gate Before running any command that probes, exploits, changes, persists on, extracts data from, or attempts credential access against a target:
- Ask the user to state the exact target URL, IP, account, or resource.
- Ask the user to confirm written authorization and the permitted scope.
- Show the exact command(s) and explain their expected effect.
- Wait for explicit confirmation in the current conversation.
Without that confirmation, remain read-only and provide defensive guidance only. Prefer a sandbox, disposable VM, or controlled lab.
Autonomous Testing Priority
Start with username enumeration — it's the fastest win and gates the rest.
Pattern 1 — Username enumeration (response difference for valid vs invalid email):
- POST to the forgot-password endpoint with a clearly invalid email (e.g.
nonexistent@fakedomain12345.com) — record the response body, status code, and length - POST with an email you know exists (or try common patterns like
admin@target.com,test@target.com,user@target.com) - Compare responses: different message ("Email sent" vs "Email not found"), different HTTP status, or meaningfully different body length = username enumeration confirmed
- Proof: enumeration is confirmed when the two responses differ measurably (baseline vs probe) in message text, status code, or body length
Pattern 2 — Reset token exposed in the API response: Some APIs return the reset token directly in the response body (instead of only emailing it). POST to the forgot-password endpoint and look for a token, link, or code in the JSON/HTML response. If a token appears that lets you reset the password, that's an immediate account-takeover vector.
Pattern 3 — Reset token replay (reuse after use):
- Complete a full password reset cycle: request token → use it to reset password
- Immediately try submitting the same token again to the reset-password endpoint
- If the second submission returns 200 or "success" → token not invalidated after use
Pattern 4 — No rate limit on reset requests: Submit the forgot-password endpoint 10-20 times rapidly with the same email. If all succeed without a 429, lockout, or CAPTCHA → no rate limit (enumeration + token flooding is possible).
Content-type: Forgot-password endpoints are often JSON-based REST APIs. Use application/x-www-form-urlencoded only if the endpoint is a traditional HTML form (check the login page's HTML to determine form encoding).
Proof: Username enumeration = measurably different response (body/status/length). Token exposure = token in response body. Token replay = second successful use of a consumed token.
Vulnerability Classes in This Skill
1. Username Enumeration via Password Reset
Different error messages for valid vs invalid accounts leaks the user list without authentication. Even timing differences (fast "no user found" vs slow "email queued") count.
High-value targets: admin accounts, employee email patterns, API keys derived from usernames.
2. Weak / Predictable Reset Tokens
A reset token derived from timestamp, username, or sequential IDs can be brute-forced:
base64(email + timestamp)— decodable- 4-6 digit numeric code — 10K guesses, easily feasible with no rate limit
- Sequential
token=1234,token=1235— trivially enumerable
3. Token Not Bound to Session or IP
Most apps generate a token, email it, and accept it from any browser. A truly bound token should only work from the same IP or require the original session cookie. If neither is enforced → link forwarding = account takeover.
Token leak via Referer / third-party resources. When the token rides in the reset-page URL (/reset?token=…) and that page loads any cross-origin resource (analytics, ads, fonts, a CDN image), the full URL — token included — leaks to that third party in the Referer header. Check the reset page's outbound requests: if the token appears in any cross-origin Referer, it's harvestable without the victim's inbox. Same leak via a <meta name=referrer> misconfig or an outbound link the victim clicks from the reset page. Disclosed token-leak→ATO class: https://hackerone.com/reports/173551.
…
FAQ
Why do I need permission to use this?
Using security testing tools without permission is illegal. This tool tests for security weaknesses and should only be used on systems you have explicit authorization to test.
What is 'username enumeration'?
It's discovering which usernames or emails are valid on a system. If password recovery gives different responses for valid and invalid emails, this can be used to list users.
What is a 'reset token'?
It's a temporary code sent to your email when you forget your password. It allows you to set a new one. The tool checks if this code is secure and if it can be reused or guessed.
Details
Original description by the author
Hunt Forgot Password / Account Recovery Authentication Flaws
Popularity
- GitHub stars
- 48k
- Ranking position
- #3259
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
django-security
Helps your agent implement security practices in Django applications. It focuses on authentication, authorization, and prevention against common attacks, ensuring more secure code.
affaan-m/ECC
laravel-security
Helps your agent secure Laravel applications against threats. Implements security practices for authentication, authorization, and common attack prevention.
affaan-m/ECC
module-regression
Helps your agent manage changes in large projects. Ensures code changes in one part don't break other parts.
affaan-m/ECC