๐ช How I Bypassed a 403 Forbidden WAF Protection (and What I Learned)
๐ต๏ธโโ๏ธ The Beginning: Seeing a 403 on Feroxbuster
๐ช How I Bypassed a 403 Forbidden WAF Protection (and What I Learned)

๐ต๏ธโโ๏ธ The Beginning: Seeing a 403 on Feroxbuster
Every good story in hacking starts with a simple clue.
For me, it began with a feroxbuster scan. I was enumerating directories when I noticed multiple endpoints returning 403 Forbidden. To many people, that might look like a dead end. But for me, 403 is a signal. It means:
- Thereโs something valuable behind it.
- Someone doesnโt want you to see it.
And thatโs exactly where I get curious.
๐ก The Thought Process: Can It Be Bypassed?
When I see a 403, I donโt stop. I ask myself:
- Is this just a WAF (Web Application Firewall) filter?
- Can I trick it with encoding, path traversal, or header tampering?
- What if I look at the raw request, strip it down, and replay it differently?
This mindset is crucial. A 403 is often just a badly configured rule โ and bad configs can be bypassed.
๐ The Tools I Used
- feroxbuster โ for directory discovery
- 4zero3 / bypass-403 / NoMore403 โ automated 403 bypass payload testing
- curl โ raw request testing (with
--http1.1and--path-as-is) - Burp Suite โ for manual inspection, replay, and automation (Turbo Intruder)
๐ The Breakthrough: curl Wins
I found that /wp-content/xmlrpc.php returned 403 normally. But when I sent the request with obfuscation, something changed.
Normal Request (Blocked)
curl -k -o /dev/null -s -w "Status: %{http_code} | Size: %{size_download}\n" \
'https://target.com/wp-content/xmlrpc.php'

Bypass Request (Allowed)
curl -k -o /dev/null -s -w "Status: %{http_code} | Size: %{size_download}\n" \
'https://target.com/wp-content/xmlrpc.php/../../../'
Suddenly, 403 โ 200. The WAF was tricked.

Other encodings also worked:
.../xmlrpc.php/%2e%2e/
.../xmlrpc.php/..;/
This confirmed that the WAFโs path normalization rules were flawed.
๐ฏ Why This Matters
Bypassing WAF restrictions isnโt just a fun trick. It means:
- Brute Force Amplification โ Using
system.multicallin XML-RPC for mass login attempts. - DDoS โ Leveraging
pingback.pingas an amplifier. - SSRF โ Using XML-RPC to make internal requests.
- Sensitive File Access โ Extending the same bypass to
/wp-config.phpor/.htaccess.
In other words, a bypass like this removes the shield the WAF was supposed to provide.
๐ Reporting It
Even though the company isnโt running a bug bounty program, I documented my findings properly and Reported.
Because professionalism matters โ whether or not thereโs a payout.
๐ Lessons Learned
- 403 isnโt the end โ itโs often the beginning.
- Think like a bypasser โ encoding, traversal, headers, methods.
- Keep requests minimal โ sometimes a single header change is all it takes.
- Document your findings like a pro โ even if the company has no bounty, you build credibility.
This journey wasnโt about a reward โ it was about the thrill of turning a 403 into a 200 and learning something powerful along the way.
๐ Final Thoughts
If youโre a beginner in bug bounty or pentesting, remember this:
- When you see a
403 Forbidden, donโt give up. - That โforbiddenโ door is often unlocked if you just try the right key.
Sometimes, the difference between โblockedโ and โbypassedโ is just %2e%2e. ๐
๋ฉํ๋ฐ์ดํฐ
- post_id
- b2bb859eddaf
- slug
- how-i-bypassed-a-403-forbidden-waf-protection-and-what-i-learned-b2bb859eddaf
- url
- https://medium.com/@samael0x4/how-i-bypassed-a-403-forbidden-waf-protection-and-what-i-learned-b2bb859eddaf
- canonical_url
- https://medium.com/@samael0x4/how-i-bypassed-a-403-forbidden-waf-protection-and-what-i-learned-b2bb859eddaf
- author_url
- https://medium.com/@samael0x4
- status
- ok
- fetched_at
- 2026-09-09 08:15:46