119 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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** на деяке довільне значення ([це спрацювало тут](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
- Спробуйте [**використати інші User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) для доступу до ресурсу.
- **Fuzz HTTP заголовки**: спробуйте використовувати HTTP Proxy **заголовки**, HTTP Authentication Basic та NTLM brute-force (лише з кількома комбінаціями) та інші техніки. Для цього я створив інструмент [**fuzzhttpbypass**](https://github.com/carlospolop/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**](../../pentesting-web/http-request-smuggling/index.html) **або** [**hop-by-hop заголовками**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.**
- Fuzz [**спеціальні HTTP заголовки**](special-http-headers.md), шукаючи різні відповіді.
- **Fuzz спеціальні HTTP заголовки** під час fuzzing **HTTP Methods**.
- **Видаліть заголовок Host** і, можливо, ви зможете обійти захист.
## Path **Fuzzing**
Якщо _/path_ заблоковано:
- Спробуйте використовувати `/%2e/path` (якщо доступ заблоковано проксі, це може обійти захист). Спробуйте також `/%252e**/path` (подвійне кодування URL)
- Спробуйте **Unicode обхід**: _/**%ef%bc%8f**path_ (кодування 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)
- Використовуйте весь [**цей список**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) у наступних ситуаціях:
- /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](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)).
- **Змініть протокол**: з http на https, або з https на http
- Перейдіть до [**https://archive.org/web/**](https://archive.org/web/) і перевірте, чи був у минулому цей файл **доступний у всьому світі**.
## **Brute Force**
- **Вгадайте пароль**: протестуйте наступні загальні облікові дані. Чи знаєте ви щось про жертву? Або назву виклику CTF?
- [**Brute force**](../../generic-hacking/brute-force.md#http-brute)**:** спробуйте базову, digest та NTLM аутентифікацію.
```:Common creds
admin admin
admin password
admin 1234
admin admin1234
admin 123456
root toor
test test
guest guest
```
## Автоматичні інструменти
- [https://github.com/lobuhi/byp4xx](https://github.com/lobuhi/byp4xx)
- [https://github.com/iamj0ker/bypass-403](https://github.com/iamj0ker/bypass-403)
- [https://github.com/gotr00t0day/forbiddenpass](https://github.com/gotr00t0day/forbiddenpass)
- [Burp Extension - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122)
- [Forbidden Buster](https://github.com/Sn1r/Forbidden-Buster)
- [NoMoreForbidden](https://github.com/akinerk/NoMoreForbidden)
{{#include ../../banners/hacktricks-training.md}}