# 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":"\","user_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}}