RatVault is Rat Corp’s internal document portal — contracts, reports, and shared files for staff. Use the menu above to sign in or read about the platform.
CWAP Module 01 · Recon & Application Mapping · skill focus: content discovery.
Not every page is in the menu. What did the developers forget to remove from the webroot before shipping? The nav shows what RatVault wants you to see — your job is to map what it does not. Start with the Recon Playbook below.
This panel teaches the technique. It intentionally does not list this lab’s hidden paths — discovering them is the exercise. Route everything through Burp and filter by status/size to cut soft-404 noise.
Finding files and directories the app never links to: leftover .bak/.old/~ backups, .zip/.tar.gz archives, editor swap files (.swp, .DS_Store), an exposed .git directory, robots.txt, sitemap.xml, /.well-known/, directory listings, and forgotten dev/admin/staging endpoints. Every extra path is attack surface the developers forgot to remove.
# always read these first
curl -s https://cwap.thexssrat.com/discovery/robots.txt
curl -s https://cwap.thexssrat.com/discovery/sitemap.xml
curl -s https://cwap.thexssrat.com/discovery/.well-known/security.txt
# exposed source control? try it, then dump it
curl -s https://cwap.thexssrat.com/discovery/.git/HEAD
curl -s https://cwap.thexssrat.com/discovery/.git/config
git-dumper https://cwap.thexssrat.com/discovery/.git/ ./loot
# for any filename you already know, try backup suffixes
# config.php -> config.php.bak / config.php.old / config.php~
# index.php -> .index.php.swp
for s in .bak .old .zip .txt .swp '~'; do \
curl -s -o /dev/null -w "%{http_code} config.php$s\n" \
https://cwap.thexssrat.com/discovery/config.php$s; done/usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
/usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt
/usr/share/seclists/Discovery/Web-Content/raft-large.txt
/usr/share/seclists/Discovery/Web-Content/common.txt
/usr/share/seclists/Discovery/Web-Content/big.txtNote the /discovery/ path prefix in the target URL — FUZZ goes after it.
# directories, recurse two levels deep
ffuf -u https://cwap.thexssrat.com/discovery/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt \
-recursion -recursion-depth 2 -e .bak,.old,.zip,.txt,.php,.swp -fc 404
# files, keep redirects/forbidden (often real)
ffuf -u https://cwap.thexssrat.com/discovery/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt \
-e .bak,.old,.zip -mc 200,301,302,403feroxbuster -u https://cwap.thexssrat.com/discovery/ \
-w /usr/share/seclists/Discovery/Web-Content/raft-medium.txt \
-x bak,old,zip,txt,swp -d 3 --extract-linksdirsearch -u https://cwap.thexssrat.com/discovery/ \
-w /usr/share/seclists/Discovery/Web-Content/raft-large.txt \
-e bak,old,zip,txt -rDiscovery is iterative: a path found inside one artifact (a leaked .git/config, a downloaded backup archive, an HTML comment, a sitemap entry) points at the next hidden thing. Read everything you pull, then feed the new names back into your wordlists. When a scanner stalls, switch to --extract-links / recursion so newly found directories get fuzzed too.