# 403 & 401 Bypasses {{#include ../../banners/hacktricks-training.md}} ## HTTP Verbs/Methods Fuzzing Pokušajte koristiti **različite glagole** za pristup datoteci: `GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK` - Proverite zaglavlja odgovora, možda se može dobiti neka informacija. Na primer, **200 odgovor** na **HEAD** sa `Content-Length: 55` znači da **HEAD glagol može pristupiti informacijama**. Ali još uvek morate pronaći način da exfiltrirate te informacije. - Korišćenje HTTP zaglavlja kao što je `X-HTTP-Method-Override: PUT` može prepisati korišćeni glagol. - Koristite **`TRACE`** glagol i ako imate sreće, možda u odgovoru možete videti i **zaglavlja koja su dodali međuproksiji** koja bi mogla biti korisna. ## HTTP Headers Fuzzing - **Promenite Host zaglavlje** na neku proizvoljnu vrednost ([to je ovde uspelo](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31)) - Pokušajte da [**koristite druge User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) za pristup resursu. - **Fuzz HTTP zaglavlja**: Pokušajte koristiti HTTP Proxy **zaglavlja**, HTTP autentifikaciju Basic i NTLM brute-force (samo sa nekoliko kombinacija) i druge tehnike. Da bih sve ovo uradio, napravio sam alat [**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` Ako je **putanja zaštićena**, možete pokušati da zaobiđete zaštitu putanje koristeći ova druga zaglavlja: - `X-Original-URL: /admin/console` - `X-Rewrite-URL: /admin/console` - Ako je stranica **iza proksija**, možda je proksi taj koji vam sprečava pristup privatnim informacijama. Pokušajte da zloupotrebite [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/index.html) **ili** [**hop-by-hop zaglavlja**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.** - Fuzz [**specijalna HTTP zaglavlja**](special-http-headers.md) tražeći različite odgovore. - **Fuzz specijalna HTTP zaglavlja** dok fuzzujete **HTTP metode**. - **Uklonite Host zaglavlje** i možda ćete moći da zaobiđete zaštitu. ## Path **Fuzzing** Ako je _/path_ blokiran: - Pokušajte koristiti `/%2e/path` (ako je pristup blokiran od strane proksija, ovo bi moglo zaobići zaštitu). Pokušajte takođe `/%252e**/path` (dupla URL enkodacija) - Pokušajte **Unicode zaobilaženje**: _/**%ef%bc%8f**path_ (URL enkodirani karakteri su kao "/") tako da kada se ponovo enkodira, biće _//path_ i možda ste već zaobišli proveru imena _/path_ - **Druga zaobilaženja putanje**: - 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) - Koristite [**ovu listu**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) u sledećim situacijama: - /FUZZsecret - /FUZZ/secret - /secretFUZZ - **Druga API zaobilaženja:** - /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** - Promenite **vrednost parametra**: Od **`id=123` --> `id=124`** - Dodajte dodatne parametre u URL: `?`**`id=124` —-> `id=124&isAdmin=true`** - Uklonite parametre - Promenite redosled parametara - Koristite specijalne karaktere. - Izvršite testiranje granica u parametrima — pružite vrednosti kao što su _-234_ ili _0_ ili _99999999_ (samo neki primeri). ## **Protocol version** Ako koristite HTTP/1.1 **pokušajte koristiti 1.0** ili čak testirajte da li **podržava 2.0**. ## **Other Bypasses** - Dobijte **IP** ili **CNAME** domena i pokušajte **kontaktirati ga direktno**. - Pokušajte da **opterećujete server** šaljući uobičajene GET zahteve ([Ovo je uspelo ovom tipu sa Facebookom](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)). - **Promenite protokol**: sa http na https, ili za https na http - Idite na [**https://archive.org/web/**](https://archive.org/web/) i proverite da li je u prošlosti ta datoteka bila **globalno dostupna**. ## **Brute Force** - **Pogodite lozinku**: Testirajte sledeće uobičajene kredencijale. Da li znate nešto o žrtvi? Ili ime CTF izazova? - [**Brute force**](../../generic-hacking/brute-force.md#http-brute)**:** Pokušajte osnovnu, digest i NTLM autentifikaciju. ```:Common creds admin admin admin password admin 1234 admin admin1234 admin 123456 root toor test test guest guest ``` ## Automatski alati - [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}}