Skip to main content

Web Application Enumeration

Reference: https://owasp.org/www-project-top-ten/

Phase I — Enumeration​

1. Technology Fingerprinting​

Identify technologies running on the target:

2. Nmap Service Scan​

sudo nmap -p 80 -sV $TARGET

3. Nmap HTTP Scripts​

sudo nmap -p 80 --script=http-enum $TARGET

4. Directory Discovery​

Always brute force with the file extensions relevant to the stack (-x), and use -k to skip TLS verification on HTTPS:

gobuster dir -u http://$TARGET -w /usr/share/wordlists/dirb/common.txt -x php,txt,html,bak
feroxbuster -u http://$TARGET -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -x php,txt -r
ffuf -u http://$TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -e .php,.txt

feroxbuster recurses automatically (-r follows redirects); ffuf is the fastest and drives the fuzzing patterns below.

tip

On engagements, use multiple wordlists and run them in the background. Decrease thread count with -t 5 to reduce traffic if needed.

Useful wordlists:

  • /usr/share/wordlists/dirb/common.txt
  • /usr/share/wordlists/dirb/big.txt
  • /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt
  • /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt

5. Common Files to Check​

Always request these directly — they leak structure, tech, and sometimes credentials:

curl -s http://$TARGET/robots.txt
curl -s http://$TARGET/sitemap.xml
curl -s http://$TARGET/.git/HEAD # exposed git repo → dump with git-dumper
curl -s http://$TARGET/.env # framework secrets
curl -s http://$TARGET/security.txt

6. Parameter & Virtual Host Fuzzing​

Discover hidden GET parameters:

ffuf -u "http://$TARGET/index.php?FUZZ=1" -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -fs <baseline-size>

Discover virtual hosts (name-based sites behind the same IP):

ffuf -u http://$TARGET -H "Host: FUZZ.$DOMAIN" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -fs <baseline-size>

-fs <baseline-size> filters out the default-response size so only real hits show. Use arjun as a dedicated parameter finder if ffuf is noisy.

7. Manual Inspection​

  • Inspect the entire page source
  • Right-click → Inspect input fields
  • Beautify code by clicking { } in bottom left in Firefox dev tools
  • Check all links and buttons
  • Navigate to all accessible pages

Tools​

ToolPurpose
GoBusterDirectory and file brute forcing
wfuzzWeb fuzzing (parameters, directories, etc.)
Burp SuiteHTTP proxy, request manipulation, repeater
NiktoWeb server vulnerability scanner
CeWLCustom wordlist generator from target website
wpscanWordPress-specific scanner

Common invocations:

nikto -h http://$TARGET
wpscan --url http://$TARGET --enumerate ap,at,cb,dbe # plugins, themes, config backups, users
wpscan --url http://$TARGET --passwords rockyou.txt --usernames admin
cewl -d 2 -m 5 -w wordlist.txt http://$TARGET # scrape a custom wordlist from the site

WordPress plugin/theme enumeration and login brute forcing require an API token for vulnerability data — register free at wpscan.com and pass --api-token.