In cybersecurity, data about a system's users, services, and vulnerabilities can often be uncovered through enumeration and brute-force attacks. This writeup covers my walkthrough of the Enumeration & Bruteforce room on TryHackMe, where I practiced enumerating usernames through verbose errors, exploiting weak password reset logic, and brute-forcing HTTP Basic Authentication — all backed by Burp Suite and some custom scripting.
Authentication enumeration is the process of probing a web application's login mechanisms to identify legitimate usernames — often the first step before a targeted password attack. Once a username is confirmed valid, all further effort can focus purely on cracking that one account's password.
Common enumeration surfaces: registration pages, password reset features, verbose error messages, and leaked breach data. This room focuses on verbose errors.
sudo nano /etc/hosts
# add:
10.10.88.12 enum.thm
Target: http://enum.thm/labs/verbose_login/
The login form returns different error messages depending on whether the username exists versus whether the password is wrong — a classic verbose-error leak that allows enumeration without ever needing a real password.
TryHackMe provided a Python script (script.py) to automate this check. I paired it with a public wordlist: nyxgeek/username-lists.
python3 script.py usernames_gmail.com.txt
Scrolling through the output, most entries come back [INVALID] — until the script hits a real account:
Target: http://enum.thm/labs/predictable_tokens/ — a small demo app called VulnApp.
The vulnerability exploited here is a predictable reset token. If the token in a password reset link is short or sequential, it can be brute-forced directly — no access to the victim's inbox required.
Triggered a reset for canderson@gmail.com on VulnApp's "Forgot Password" page — the app confirmed the link was sent:
Opened the reset URL through Burp, sent it to Intruder, and marked the token parameter as the payload position:
crunch 3 3 -o otp.txt -t %%% -s 100 -e 200
Generates every 3-digit value from 100–200 (101 candidates) — a fast, targeted list.
Every failed guess returned a consistent 1068-byte response — except one:
| Request | Token | Status | Length |
|---|---|---|---|
| 27 | 126 | 200 | 1131 (anomalous) |
Target: http://enum.thm/labs/basic_auth/
HTTP Basic Auth sends credentials Base64-encoded (not encrypted) in the Authorization header, with no built-in lockout — making it a solid brute-force target.
Authorization: Basic YWRtaW46dHJ5cGFzcw==admin:= from Burp's URL-encoding character set to preserve Base64 padding correctlyLogging in with the recovered credentials granted access, and the flag was displayed directly on the page:
The final task shifts from active attacks to passive reconnaissance. OSINT collects data from publicly available sources to build a target profile that fuels phishing, social engineering, or credential-stuffing.
As a demonstration, I pulled up the Wayback Machine archive for tryhackme.com — 785 snapshots saved between December 2018 and June 2024:
OSINT doesn't exploit anything directly — it feeds better context and higher-quality targets into every other technique above.
This room ties together three practical techniques: verbose error enumeration to confirm valid usernames, predictable token brute-forcing to fully take over an account via a weak reset flow, and HTTP Basic Auth brute-forcing using Burp Intruder with Base64 payload processing.
The common thread: authentication systems leak far more than they should through error messages, weak token entropy, and unthrottled login attempts — all fixable with generic error responses, cryptographically random tokens, and rate limiting.