# 403 & 401 Bypasses {{#include ../../banners/hacktricks-training.md}} ## HTTP Verbs/Methods Fuzzing Versuchen Sie, **verschiedene Verben** zu verwenden, um auf die Datei zuzugreifen: `GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK` - Überprüfen Sie die Antwort-Header, vielleicht können einige Informationen bereitgestellt werden. Zum Beispiel bedeutet eine **200-Antwort** auf **HEAD** mit `Content-Length: 55`, dass das **HEAD-Verb auf die Informationen zugreifen kann**. Aber Sie müssen immer noch einen Weg finden, diese Informationen zu exfiltrieren. - Verwenden Sie einen HTTP-Header wie `X-HTTP-Method-Override: PUT`, um das verwendete Verb zu überschreiben. - Verwenden Sie das **`TRACE`**-Verb und wenn Sie sehr viel Glück haben, können Sie in der Antwort auch die **von Zwischenproxies hinzugefügten Header** sehen, die nützlich sein könnten. ## HTTP Headers Fuzzing - **Ändern Sie den Host-Header** auf einen beliebigen Wert ([das hat hier funktioniert](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31)) - Versuchen Sie, [**andere User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) zu verwenden, um auf die Ressource zuzugreifen. - **Fuzz HTTP-Header**: Versuchen Sie, HTTP-Proxy-**Header**, HTTP-Authentifizierung Basic und NTLM-Brute-Force (nur mit wenigen Kombinationen) und andere Techniken zu verwenden. Um all dies zu tun, habe ich das Tool [**fuzzhttpbypass**](https://github.com/carlospolop/fuzzhttpbypass) erstellt. - `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` Wenn der **Pfad geschützt ist**, können Sie versuchen, den Pfadschutz mit diesen anderen Headern zu umgehen: - `X-Original-URL: /admin/console` - `X-Rewrite-URL: /admin/console` - Wenn die Seite **hinter einem Proxy** ist, könnte es der Proxy sein, der Ihnen den Zugriff auf die privaten Informationen verweigert. Versuchen Sie, [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/index.html) **oder** [**Hop-by-Hop-Header**](../../pentesting-web/abusing-hop-by-hop-headers.md)** auszunutzen.** - Fuzz [**spezielle HTTP-Header**](special-http-headers.md) auf der Suche nach unterschiedlichen Antworten. - **Fuzz spezielle HTTP-Header**, während Sie **HTTP-Methoden** fuzzing. - **Entfernen Sie den Host-Header**, und vielleicht können Sie den Schutz umgehen. ## Path **Fuzzing** Wenn _/path_ blockiert ist: - Versuchen Sie, `/%2e/path` zu verwenden (wenn der Zugriff durch einen Proxy blockiert wird, könnte dies den Schutz umgehen). Versuchen Sie auch `/%252e**/path` (doppelte URL-Codierung) - Versuchen Sie **Unicode-Bypass**: _/**%ef%bc%8f**path_ (Die URL-codierten Zeichen sind wie "/"), sodass es beim Zurückcodieren _//path_ sein wird und Sie möglicherweise bereits die _/path_-Namensüberprüfung umgangen haben. - **Andere Pfad-Bypässe**: - 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) - Verwenden Sie [**diese Liste**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) in den folgenden Situationen: - /FUZZsecret - /FUZZ/secret - /secretFUZZ - **Andere API-Bypässe:** - /v3/users_data/1234 --> 403 Forbidden - /v1/users_data/1234 --> 200 OK - {“id”:111} --> 401 Unauthriozied - {“id”:\[111]} --> 200 OK - {“id”:111} --> 401 Unauthriozied - {“id”:{“id”:111\}} --> 200 OK - {"user_id":"\","user_id":"\"} (JSON Parameter Pollution) - user_id=ATTACKER_ID\&user_id=VICTIM_ID (Parameter Pollution) ## **Parameter Manipulation** - Ändern Sie den **Parametervalue**: Von **`id=123` --> `id=124`** - Fügen Sie zusätzliche Parameter zur URL hinzu: `?`**`id=124` —-> `id=124&isAdmin=true`** - Entfernen Sie die Parameter - Ändern Sie die Reihenfolge der Parameter - Verwenden Sie Sonderzeichen. - Führen Sie Grenzwerttests in den Parametern durch — geben Sie Werte wie _-234_ oder _0_ oder _99999999_ an (nur einige Beispielwerte). ## **Protokollversion** Wenn Sie HTTP/1.1 verwenden, **versuchen Sie, 1.0** zu verwenden oder testen Sie, ob es **2.0 unterstützt**. ## **Andere Bypässe** - Holen Sie sich die **IP** oder **CNAME** der Domain und versuchen Sie, **sie direkt zu kontaktieren**. - Versuchen Sie, den **Server zu belasten**, indem Sie gängige GET-Anfragen senden ([Es hat für diesen Typen mit Facebook funktioniert](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)). - **Ändern Sie das Protokoll**: von http zu https oder von https zu http - Gehen Sie zu [**https://archive.org/web/**](https://archive.org/web/) und überprüfen Sie, ob die Datei in der Vergangenheit **weltweit zugänglich** war. ## **Brute Force** - **Raten Sie das Passwort**: Testen Sie die folgenden gängigen Anmeldeinformationen. Wissen Sie etwas über das Opfer? Oder den Namen der CTF-Herausforderung? - [**Brute Force**](../../generic-hacking/brute-force.md#http-brute)**:** Versuchen Sie grundlegende, Digest- und NTLM-Authentifizierung. ```:Common creds admin admin admin password admin 1234 admin admin1234 admin 123456 root toor test test guest guest ``` ## Automatische Werkzeuge - [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}}