HTTP 403/401 Bypass Auditor
A skill for systematically testing HTTP access control bypasses on web applications.
When to Use This Skill
Use this skill when:
- You encounter 403 Forbidden or 401 Unauthorized responses
- You need to test if access controls can be bypassed
- You're performing web application security assessments
- You want to enumerate protected resources
- You're testing authentication/authorization mechanisms
Testing Methodology
Follow this systematic approach to test for bypass vulnerabilities:
1. HTTP Method Fuzzing
Try different HTTP verbs to access the protected resource:
Methods to test:
GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH
- Custom/invented methods:
INVENTED, HACK
What to check:
- Response codes (200, 403, 401, 404, 500)
- Response headers (Content-Length, Server, X-Powered-By)
- Response body differences
- HEAD requests returning 200 with Content-Length may indicate accessible content
Method override headers:
X-HTTP-Method-Override: PUT
X-HTTP-Method-Override: DELETE
TRACE method:
- Can reveal headers added by intermediate proxies
- May expose internal infrastructure details
2. HTTP Header Fuzzing
Host header manipulation:
- Change Host to arbitrary values
- Try
Host: localhost
- Remove Host header entirely
User-Agent variations:
- Test different User-Agent strings
- Use common bypass User-Agents
- Try empty User-Agent
Proxy/Forwarding headers (try with 127.0.0.1):
X-Originating-IP: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Forwarded: 127.0.0.1
Forwarded-For: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-ProxyUser-Ip: 127.0.0.1
X-Original-URL: 127.0.0.1
Client-IP: 127.0.0.1
True-Client-IP: 127.0.0.1
Cluster-Client-IP: 127.0.0.1
Path bypass headers:
X-Original-URL: /admin/console
X-Rewrite-URL: /admin/console
Special headers to fuzz:
- Content-Type variations
- Accept headers
- Authorization headers
- Custom application headers
3. Path Fuzzing
URL encoding bypasses:
/%2e/path (dot encoding)
/%252e/path (double URL encoding)
/%ef%bc%8fpath (Unicode full-width slash)
Path manipulation techniques:
- Case variations:
/SECRET vs /secret
- Trailing slashes:
/secret/
- Dot sequences:
/secret/., /./secret/..
- Double slashes:
//secret//
- Semicolon injection:
/;/secret, /.;/secret, //;//secret
- File extensions:
/secret.json (Ruby apps)
API version bypasses:
/v3/users_data/1234 → /v1/users_data/1234
- Try different API version numbers
Parameter pollution:
- JSON:
{"user_id":"<legit_id>","user_id":"<victims_id>"}
- Query:
user_id=ATTACKER_ID&user_id=VICTIM_ID
- Array injection:
{"id":[111]} instead of {"id":111}
- Nested objects:
{"id":{"id":111}}
4. Parameter Manipulation
Value changes:
- Increment/decrement IDs:
id=123 → id=124
- Boundary testing:
-234, 0, 99999999
- Special characters in values
Parameter additions:
- Add admin flags:
?id=124&isAdmin=true
- Add authentication parameters
- Add debug parameters
Parameter removal:
- Remove required parameters
- Remove authentication tokens
Parameter reordering:
- Change parameter order in query string
- May bypass validation logic
5. Protocol Testing
HTTP version changes:
- HTTP/1.1 → HTTP/1.0
- HTTP/1.1 → HTTP/2.0
- Different protocol versions may have different handling
Protocol switching:
- HTTP → HTTPS
- HTTPS → HTTP
- May bypass SSL/TLS checks
6. Infrastructure Bypasses
Direct IP access:
- Get IP or CNAME of domain
- Contact directly without DNS
- May bypass domain-based restrictions
Archive testing:
Server stress:
- Send rapid common GET requests
- May cause race conditions or timeout bypasses
7. Authentication Bypass
Common credentials to test:
admin admin
admin password
admin 1234
admin admin1234
admin 123456
root toor
test test
guest guest
Authentication methods:
- Basic authentication
- Digest authentication
- NTLM authentication
- Session token manipulation
Automated Testing
Use these tools for systematic testing:
Advanced Techniques
HTTP Request Smuggling:
- If behind a proxy, test for request smuggling vulnerabilities
- Can bypass proxy-based access controls
Hop-by-Hop Headers:
- Abuse hop-by-hop headers to bypass proxy restrictions
- Headers like
Connection, Keep-Alive, Proxy-Authenticate
Unicode Fuzzing:
- Use Unicode character lists for path fuzzing
- Test at different positions:
/FUZZsecret, /FUZZ/secret, /secretFUZZ
Reporting Findings
When documenting bypass vulnerabilities:
- Endpoint: The protected URL
- Original Response: 403/401 status and body
- Bypass Method: Which technique worked
- Modified Request: The successful request details
- Impact: What was accessed or what could be accessed
- Remediation: How to fix the vulnerability
Safety and Ethics
- Only test systems you have authorization to test
- Document all findings for remediation
- Avoid destructive operations (DELETE, PUT with data modification)
- Respect rate limits to avoid DoS
- Follow responsible disclosure practices
Quick Reference
Most effective bypasses to try first:
- HTTP method changes (HEAD, OPTIONS, TRACE)
- Path case variations and trailing slashes
- X-Forwarded-For header with 127.0.0.1
- URL encoding variations
- Parameter pollution
- API version changes
- Direct IP access
Response indicators of success:
- Status code changes from 403/401 to 200
- Content-Length changes
- Different response body
- New headers appear
- Server error (500) may indicate partial bypass
1---2name: http-bypass-auditor3description: How to audit and test for HTTP 403/401 bypass vulnerabilities. Use this skill whenever the user mentions access control testing, forbidden page bypasses, authentication bypass, 403 errors, 401 errors, HTTP method fuzzing, header manipulation, path traversal testing, or any web security testing involving restricted resources. Make sure to use this skill when users want to test if they can access protected endpoints through various bypass techniques, even if they don't explicitly mention 'bypass' or '403'.4---56# HTTP 403/401 Bypass Auditor78A skill for systematically testing HTTP access control bypasses on web applications.910## When to Use This Skill1112Use this skill when:13- You encounter 403 Forbidden or 401 Unauthorized responses14- You need to test if access controls can be bypassed15- You're performing web application security assessments16- You want to enumerate protected resources17- You're testing authentication/authorization mechanisms1819## Testing Methodology2021Follow this systematic approach to test for bypass vulnerabilities:2223### 1. HTTP Method Fuzzing2425Try different HTTP verbs to access the protected resource:2627**Methods to test:**28- `GET`, `HEAD`, `POST`, `PUT`, `DELETE`, `CONNECT`, `OPTIONS`, `TRACE`, `PATCH`29- Custom/invented methods: `INVENTED`, `HACK`3031**What to check:**32- Response codes (200, 403, 401, 404, 500)33- Response headers (Content-Length, Server, X-Powered-By)34- Response body differences35- HEAD requests returning 200 with Content-Length may indicate accessible content3637**Method override headers:**38- `X-HTTP-Method-Override: PUT`39- `X-HTTP-Method-Override: DELETE`4041**TRACE method:**42- Can reveal headers added by intermediate proxies43- May expose internal infrastructure details4445### 2. HTTP Header Fuzzing4647**Host header manipulation:**48- Change Host to arbitrary values49- Try `Host: localhost`50- Remove Host header entirely5152**User-Agent variations:**53- Test different User-Agent strings54- Use common bypass User-Agents55- Try empty User-Agent5657**Proxy/Forwarding headers (try with 127.0.0.1):**58- `X-Originating-IP: 127.0.0.1`59- `X-Forwarded-For: 127.0.0.1`60- `X-Forwarded: 127.0.0.1`61- `Forwarded-For: 127.0.0.1`62- `X-Remote-IP: 127.0.0.1`63- `X-Remote-Addr: 127.0.0.1`64- `X-ProxyUser-Ip: 127.0.0.1`65- `X-Original-URL: 127.0.0.1`66- `Client-IP: 127.0.0.1`67- `True-Client-IP: 127.0.0.1`68- `Cluster-Client-IP: 127.0.0.1`6970**Path bypass headers:**71- `X-Original-URL: /admin/console`72- `X-Rewrite-URL: /admin/console`7374**Special headers to fuzz:**75- Content-Type variations76- Accept headers77- Authorization headers78- Custom application headers7980### 3. Path Fuzzing8182**URL encoding bypasses:**83- `/%2e/path` (dot encoding)84- `/%252e/path` (double URL encoding)85- `/%ef%bc%8fpath` (Unicode full-width slash)8687**Path manipulation techniques:**88- Case variations: `/SECRET` vs `/secret`89- Trailing slashes: `/secret/`90- Dot sequences: `/secret/.`, `/./secret/..`91- Double slashes: `//secret//`92- Semicolon injection: `/;/secret`, `/.;/secret`, `//;//secret`93- File extensions: `/secret.json` (Ruby apps)9495**API version bypasses:**96- `/v3/users_data/1234` → `/v1/users_data/1234`97- Try different API version numbers9899**Parameter pollution:**100- JSON: `{"user_id":"<legit_id>","user_id":"<victims_id>"}`101- Query: `user_id=ATTACKER_ID&user_id=VICTIM_ID`102- Array injection: `{"id":[111]}` instead of `{"id":111}`103- Nested objects: `{"id":{"id":111}}`104105### 4. Parameter Manipulation106107**Value changes:**108- Increment/decrement IDs: `id=123` → `id=124`109- Boundary testing: `-234`, `0`, `99999999`110- Special characters in values111112**Parameter additions:**113- Add admin flags: `?id=124&isAdmin=true`114- Add authentication parameters115- Add debug parameters116117**Parameter removal:**118- Remove required parameters119- Remove authentication tokens120121**Parameter reordering:**122- Change parameter order in query string123- May bypass validation logic124125### 5. Protocol Testing126127**HTTP version changes:**128- HTTP/1.1 → HTTP/1.0129- HTTP/1.1 → HTTP/2.0130- Different protocol versions may have different handling131132**Protocol switching:**133- HTTP → HTTPS134- HTTPS → HTTP135- May bypass SSL/TLS checks136137### 6. Infrastructure Bypasses138139**Direct IP access:**140- Get IP or CNAME of domain141- Contact directly without DNS142- May bypass domain-based restrictions143144**Archive testing:**145- Check https://archive.org/web/146- See if resources were previously accessible147- May reveal historical access patterns148149**Server stress:**150- Send rapid common GET requests151- May cause race conditions or timeout bypasses152153### 7. Authentication Bypass154155**Common credentials to test:**156```157admin admin158admin password159admin 1234160admin admin1234161admin 123456162root toor163test test164guest guest165```166167**Authentication methods:**168- Basic authentication169- Digest authentication170- NTLM authentication171- Session token manipulation172173## Automated Testing174175Use these tools for systematic testing:176177| Tool | Purpose |178|------|---------|179| [byp4xx](https://github.com/lobuhi/byp4xx) | 4xx error bypass automation |180| [bypass-403](https://github.com/iamj0ker/bypass-403) | 403 bypass testing |181| [forbiddenpass](https://github.com/gotr00t0day/forbiddenpass) | Forbidden page bypass |182| [403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122) | Burp extension |183| [Forbidden Buster](https://github.com/Sn1r/Forbidden-Buster) | Automated bypass testing |184| [NoMoreForbidden](https://github.com/akinerk/NoMoreForbidden) | 403 bypass tool |185186## Advanced Techniques187188**HTTP Request Smuggling:**189- If behind a proxy, test for request smuggling vulnerabilities190- Can bypass proxy-based access controls191192**Hop-by-Hop Headers:**193- Abuse hop-by-hop headers to bypass proxy restrictions194- Headers like `Connection`, `Keep-Alive`, `Proxy-Authenticate`195196**Unicode Fuzzing:**197- Use Unicode character lists for path fuzzing198- Test at different positions: `/FUZZsecret`, `/FUZZ/secret`, `/secretFUZZ`199200## Reporting Findings201202When documenting bypass vulnerabilities:2032041. **Endpoint**: The protected URL2052. **Original Response**: 403/401 status and body2063. **Bypass Method**: Which technique worked2074. **Modified Request**: The successful request details2085. **Impact**: What was accessed or what could be accessed2096. **Remediation**: How to fix the vulnerability210211## Safety and Ethics212213- Only test systems you have authorization to test214- Document all findings for remediation215- Avoid destructive operations (DELETE, PUT with data modification)216- Respect rate limits to avoid DoS217- Follow responsible disclosure practices218219## Quick Reference220221**Most effective bypasses to try first:**2221. HTTP method changes (HEAD, OPTIONS, TRACE)2232. Path case variations and trailing slashes2243. X-Forwarded-For header with 127.0.0.12254. URL encoding variations2265. Parameter pollution2276. API version changes2287. Direct IP access229230**Response indicators of success:**231- Status code changes from 403/401 to 200232- Content-Length changes233- Different response body234- New headers appear235- Server error (500) may indicate partial bypass