119 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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":"\<legit_id>","user_id":"\<victims_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}}