Skills and the agent system prompt referenced external CLIs that are not present in containers/Dockerfile, which could lead the agent to invoke missing binaries. Replace them with installed equivalents: - asset_discovery: drop amass/cero and the projectdiscovery tools that are not installed (tlsx/dnsx/asnmap/mapcidr/uncover); rewrite around the installed subfinder/httpx/naabu plus curl+jq (crt.sh), openssl s_client, dig, and whois. Stop claiming the full projectdiscovery suite is available. - subdomain_takeover: replace dnsx with dig in the pipeline example. - weak_password_detection: drop hydra/cewl/patator; use ffuf for web logins and nmap NSE *-brute scripts for services; fix dead /usr/share/wordlists and /usr/share/seclists paths (nothing ships by default -> download to /home/pentester/tools/wordlists at runtime). - system_prompt: replace msfconsole with sqlmap in the interactive-process example. active_directory skill is left as-is: it already ships an explicit install block for its tools.
9.6 KiB
name, description
| name | description |
|---|---|
| weak-password-detection | Weak password detection, credential stuffing, and brute-force testing using common passwords, system-generated credentials, and HTTP fuzzing / NSE brute-force tooling |
Weak Password Detection / Credential Brute-Force
Weak or default credentials remain one of the most prevalent and high-impact vulnerabilities. This skill covers systematic detection of weak passwords through dictionary attacks, credential stuffing, system-generated password prediction, and brute-force tooling.
Attack Surface
- Login portals (web, API, mobile, SSH, FTP, Telnet, RDP)
- Admin panels, dashboards, and management interfaces
- Default or hardcoded credentials in applications and devices
- Self-registration flows with weak password policies
- Password reset flows that generate predictable tokens or passwords
- API key and token authentication with weak secrets
Reconnaissance
Identify Authentication Endpoints
- Standard login forms:
/login,/signin,/auth,/authenticate,/api/login - Admin panels:
/admin,/administrator,/manage,/console,/cpanel - API auth:
/api/v1/token,/oauth/token,/api/auth,/graphql(login mutations) - Service ports: SSH (22), FTP (21), Telnet (23), SMB (445), RDP (3389), MySQL (3306), PostgreSQL (5432), Redis (6379), MongoDB (27017)
- Mobile app login endpoints and deep-link auth handlers
Determine Authentication Mechanism
- Form-based (POST with username/password fields)
- Basic Authentication (Base64
Authorization: Basic ...) - Bearer token / JWT (password grant flow)
- API key in header, query parameter, or body
- Multi-step authentication (username first, then password)
- CAPTCHA presence and type (reCAPTCHA, hCaptcha, image-based, math)
- Rate limiting indicators (429 responses, lockout messages, delays)
Enumerate Valid Usernames
- Error message differentiation: "Invalid username" vs "Invalid password"
- Registration page username availability checks
- Password reset flow: response timing or message leakage
- Public profiles, API responses, or metadata exposing usernames
- Common patterns:
admin,administrator,root,user,test,guest,support,service,api,dev,ops - Email format derivation from company domain patterns
Key Vulnerabilities
Weak Password Policies
- No minimum length or complexity requirements
- Allowing common passwords:
password,123456,qwerty,admin,letmein - Not checking against breached password databases (Have I Been Pwned)
- Case-insensitive password storage
- No password history enforcement
- Excessively short maximum length (indicates plaintext or weak hashing)
Default and Hardcoded Credentials
- Vendor defaults:
admin/admin,admin/password,root/root,guest/guest - Application frameworks:
django/admin,tomcat/tomcat,weblogic/weblogic - IoT devices, routers, cameras: manufacturer-specific defaults
- Database defaults:
postgres/postgres,sa/sa,root/(empty) - Cloud defaults: AWS instance metadata, Azure default service principals
- Hardcoded in source code, configuration files, or documentation
Credential Stuffing
- Users reuse passwords across services
- Breached credential lists (COMB, Collection #1-5, etc.) enable mass account takeover
- No multi-factor authentication allows direct access with valid credentials
- Missing breach detection or forced password rotation after known leaks
Predictable System-Generated Passwords
- Sequential or pattern-based:
Password1,Welcome2025!,CompanyName123 - Time-based generation: passwords derived from registration timestamp
- Weak randomness: predictable PRNG seeds in password generators
- Reset tokens that double as temporary passwords with short expiration
Brute-Force Vulnerabilities
- No rate limiting on login attempts
- Absent or ineffective account lockout (client-side only, easily bypassed)
- IP-based blocking without session/user correlation (rotate IPs via proxy)
- CAPTCHA bypassable or only triggered after excessive attempts
- Parallel login attempts not tracked (race conditions on attempt counters)
- Verbose error messages revealing valid usernames
Advanced Techniques
Targeted Password Lists
- Generate custom wordlists from:
- Company name, product names, and domain components
- Geographic location, industry terms
- Season + year patterns:
Summer2025!,Winter2026@ - Keyboard walks and leet speak variations
- Previously breached passwords for the target domain
- Scrape the target site to build a content-derived wordlist (e.g. a small custom Python crawler that harvests unique words)
Credential Stuffing Workflows
- Use breach databases filtered by target domain or related domains
- Test email:password pairs where email matches target domain
- Test username:password pairs with common username derivations
- Validate successful logins without triggering MFA by checking session endpoints
Multi-Step Authentication Bypass
- Username enumeration → password brute-force on second step
- Session fixation between steps: manipulate step identifiers
- Skip steps via direct URL access to later stages
- Response manipulation to bypass verification checks
API and Mobile-Specific
- GraphQL login mutations: batch brute-force via array inputs
- Mobile APIs often lack rate limiting compared to web frontends
- JWT password grant flows: brute-force against
/tokenendpoint - OAuth2 password grant: test
grant_type=passwordwith weak credentials
Service-Level Brute-Force
- HTTP login endpoints:
ffufor custom scripts (see Tooling) - SSH/FTP/SMB/Telnet and other services:
nmapNSE*-brutescripts, e.g.nmap -p 22 --script ssh-brute --script-args userdb=users.txt,passdb=passwords.txt target.com - Databases (MySQL, PostgreSQL, MongoDB, Redis): weak/default credentials via the matching NSE brute script (
mysql-brute,pgsql-brute,mongodb-brute,redis-brute) or a custom client script - Any protocol lacking a ready script: custom Python
Tooling
ffuf (primary for web logins)
- Login brute-force with multiple users and passwords:
ffuf -w users.txt:USER -w passwords.txt:PASS -u https://target.com/login -X POST -d "username=USER&password=PASS" -fr "Invalid" - JSON body / custom headers via
-Hand a JSON-dpayload - Filter by response size, status code, or regex to identify successes
nmap NSE (service brute-force)
*-brutescripts cover many non-HTTP services:nmap -p 22 --script ssh-brute --script-args userdb=users.txt,passdb=passwords.txt target.com- Available scripts include
ssh-brute,ftp-brute,smb-brute,telnet-brute,mysql-brute,pgsql-brute,mongodb-brute,redis-brute,http-brute,http-form-brute.
Custom Python Scripts
- Use
requestswith threading for high-speed API brute-force - Implement jitter and proxy rotation to evade rate limiting
- Parse CSRF tokens dynamically between requests
Wordlists
No password wordlists ship in the sandbox by default — download what you need into /home/pentester/tools/wordlists at runtime:
- Common passwords (e.g.
rockyou.txt) from its upstream source - SecLists
Passwords/andPasswords/Default-Credentials/(vendor defaults) from https://github.com/danielmiessler/SecLists - Custom lists from target-specific scraping
- Breach compilation subsets filtered by target relevance
Validation
- Confirm successful login with captured credentials (session token, cookie, or JWT)
- Verify account access level: admin vs user privileges
- Check if MFA is enforced post-login or can be bypassed
- Test credential reuse across other endpoints or services
- Document password policy weaknesses that allowed the breach
- Verify if the same credentials work on staging, dev, or related domains
False Positives
- Honey accounts or honeypot responses designed to mislead attackers
- Temporary lockouts that resolve quickly (distinguish from permanent bans)
- Different error messages that don't actually indicate valid username enumeration
- CAPTCHA or WAF blocking that appears as a failed login
- Rate limiting that returns 429 instead of 401 (adjust timing)
Impact
- Complete account takeover for affected users
- Administrative access leading to full system compromise
- Lateral movement via reused credentials across services
- Data exfiltration, privilege escalation, and persistence
- Reputational damage and compliance violations (GDPR, PCI-DSS)
Pro Tips
- Always start with default credentials and vendor-specific lists before broad brute-force
- Enumerate usernames first; password brute-force without valid users is inefficient
- Use small, targeted wordlists before massive lists like rockyou.txt
- Monitor for rate limiting and adapt delays; aggressive brute-force causes IP bans and alerts
- Test for password spraying (one password, many users) before targeted brute-force
- Check for concurrent session limits; successful logins may kick out legitimate users
- GraphQL batching can test multiple credentials in a single request, bypassing per-request limits
- Document the password policy and recommend minimum standards (length, complexity, breach checking)
- For web logins prefer
ffuf; for other services usenmapNSE*-brutescripts or custom scripts with equivalent logic - Combine with MFA testing: weak passwords plus missing MFA is a critical finding
Summary
Weak password detection requires systematic enumeration of authentication surfaces, intelligent wordlist selection, and careful brute-force execution. The highest impact often comes from default credentials, password spraying, and credential stuffing rather than exhaustive brute-force. Always validate findings with confirmed logins and assess the full scope of account compromise.