119 lines
5.9 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 Bypassy
{{#include ../../banners/hacktricks-training.md}}
## Fuzzing metod HTTP
Spróbuj użyć **różnych metod** do uzyskania dostępu do pliku: `GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK`
- Sprawdź nagłówki odpowiedzi, może pojawią się jakieś informacje. Na przykład, **odpowiedź 200** na **HEAD** z `Content-Length: 55` oznacza, że **metoda HEAD może uzyskać dostęp do informacji**. Ale nadal musisz znaleźć sposób na wyeksfiltrowanie tych informacji.
- Użycie nagłówka HTTP, takiego jak `X-HTTP-Method-Override: PUT`, może nadpisać używaną metodę.
- Użyj **metody `TRACE`** i jeśli masz dużo szczęścia, może w odpowiedzi zobaczysz również **nagłówki dodane przez pośrednie serwery proxy**, które mogą być przydatne.
## Fuzzing nagłówków HTTP
- **Zmień nagłówek Host** na dowolną wartość ([to zadziałało tutaj](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
- Spróbuj [**użyć innych User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) do uzyskania dostępu do zasobu.
- **Fuzzing nagłówków HTTP**: Spróbuj użyć nagłówków HTTP Proxy, podstawowej autoryzacji HTTP i NTLM brute-force (tylko z kilkoma kombinacjami) oraz innych technik. W tym celu stworzyłem narzędzie [**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`
Jeśli **ścieżka jest chroniona**, możesz spróbować obejść ochronę ścieżki, używając tych innych nagłówków:
- `X-Original-URL: /admin/console`
- `X-Rewrite-URL: /admin/console`
- Jeśli strona jest **za proxy**, może to właśnie proxy uniemożliwia ci dostęp do prywatnych informacji. Spróbuj wykorzystać [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/) **lub** [**nagłówki hop-by-hop**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.**
- Fuzz [**specjalne nagłówki HTTP**](special-http-headers.md), szukając różnych odpowiedzi.
- **Fuzzing specjalnych nagłówków HTTP** podczas fuzzingu **metod HTTP**.
- **Usuń nagłówek Host** i być może będziesz w stanie obejść ochronę.
## **Fuzzing ścieżek**
Jeśli _/path_ jest zablokowane:
- Spróbuj użyć _**/**_**%2e/path \_(jeśli dostęp jest zablokowany przez proxy, to może obejść ochronę). Spróbuj także**\_\*\* /%252e\*\*/path (podwójne kodowanie URL)
- Spróbuj **obejścia Unicode**: _/**%ef%bc%8f**path_ (zakodowane znaki URL są jak "/"), więc po ponownym zakodowaniu będzie to _//path_ i być może już obejdziesz sprawdzanie nazwy _/path_
- **Inne obejścia ścieżek**:
- 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)
- Użyj [**tej listy**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) w następujących sytuacjach:
- /FUZZsecret
- /FUZZ/secret
- /secretFUZZ
- **Inne obejścia 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":"\<legit_id>","user_id":"\<victims_id>"} (JSON Parameter Pollution)
- user_id=ATTACKER_ID\&user_id=VICTIM_ID (Parameter Pollution)
## **Manipulacja parametrami**
- Zmień **wartość parametru**: Z **`id=123` --> `id=124`**
- Dodaj dodatkowe parametry do URL: `?`**`id=124` —-> `id=124&isAdmin=true`**
- Usuń parametry
- Zmień kolejność parametrów
- Użyj znaków specjalnych.
- Wykonaj testy graniczne w parametrach — podaj wartości takie jak _-234_ lub _0_ lub _99999999_ (tylko kilka przykładowych wartości).
## **Wersja protokołu**
Jeśli używasz HTTP/1.1 **spróbuj użyć 1.0** lub nawet przetestuj, czy **obsługuje 2.0**.
## **Inne obejścia**
- Uzyskaj **IP** lub **CNAME** domeny i spróbuj **skontaktować się z nią bezpośrednio**.
- Spróbuj **obciążyć serwer**, wysyłając powszechne żądania GET ([to zadziałało dla tego gościa z Facebookiem](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)).
- **Zmień protokół**: z http na https, lub z https na http
- Przejdź do [**https://archive.org/web/**](https://archive.org/web/) i sprawdź, czy w przeszłości ten plik był **ogólnodostępny**.
## **Brute Force**
- **Zgadnij hasło**: Przetestuj następujące powszechne dane uwierzytelniające. Czy wiesz coś o ofierze? Lub o nazwie wyzwania CTF?
- [**Brute force**](../../generic-hacking/brute-force.md#http-brute)**:** Spróbuj podstawowej, digest i NTLM auth.
```:Common creds
admin admin
admin password
admin 1234
admin admin1234
admin 123456
root toor
test test
guest guest
```
## Narzędzia automatyczne
- [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}}