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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
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 автентифікацію.
admin admin
admin password
admin 1234
admin admin1234
admin 123456
root toor
test test
guest guest
Автоматичні інструменти
- https://github.com/lobuhi/byp4xx
- https://github.com/iamj0ker/bypass-403
- https://github.com/gotr00t0day/forbiddenpass
- Burp Extension - 403 Bypasser
- Forbidden Buster
- NoMoreForbidden
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.