hacktricks/network-services-pentesting/pentesting-web/403-and-401-bypasses.md

158 lines
9.3 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
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
**Configuração disponível instantaneamente para avaliação de vulnerabilidades e testes de penetração**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão de reconhecimento a relatórios. Não substituímos os pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para investigar mais a fundo, explorar vulnerabilidades e se divertir.
{% embed url="https://pentest-tools.com/" %}
## Fuzzing de Verbos/Métodos HTTP
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.
## Fuzzing de Cabeçalhos HTTP
* **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 cabeçalhos 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, 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/) **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 faz fuzzing de **Métodos HTTP**.
* **Remova o cabeçalho Host** e talvez você consiga contornar a proteção.
## **Fuzzing de Caminho**
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 **contorno 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 contornos 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 [**esta lista**](https://github.com/danielmiessler/SecLists/blob/master/Fuzzing/Unicode.txt) nas seguintes situações:
* /FUZZsecret
* /FUZZ/secret
* /secretFUZZ
* **Outros contornos de API:**
* /v3/users\_data/1234 --> 403 Forbidden
* /v1/users\_data/1234 --> 200 OK
* {“id”:111} --> 401 Unauthorized
* {“id”:\[111]} --> 200 OK
* {“id”:111} --> 401 Unauthorized
* {“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)
## **Manipulação de Parâmetro**
* Mude o **valor do parâmetro**: 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).
## **Versão do Protocolo**
Se estiver usando HTTP/1.1 **tente usar 1.0** ou até mesmo teste se **suporta 2.0**.
## **Outros Contornos**
* 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**.
## **Força Bruta**
* **Adivinhe a senha**: Teste as seguintes credenciais comuns. Você sabe algo sobre a vítima? Ou o nome do desafio CTF?
* [**Força bruta**](../../generic-methodologies-and-resources/brute-force.md#http-brute)**:** Tente autenticação básica, digest e NTLM.
{% code title="Credenciais comuns" %}
```
admin admin
admin password
admin 1234
admin admin1234
admin 123456
root toor
test test
guest guest
```
{% endcode %}
## 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)
* [Extensão Burp - 403 Bypasser](https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122)
* [Forbidden Buster](https://github.com/Sn1r/Forbidden-Buster)
* [NoMoreForbidden](https://github.com/akinerk/NoMoreForbidden)
<figure><img src="../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
**Configuração instantaneamente disponível para avaliação de vulnerabilidades e testes de penetração**. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas e recursos que vão de reconhecimento a relatórios. Não substituímos os pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção e exploração para dar a eles mais tempo para investigar mais a fundo, estourar shells e se divertir.
{% embed url="https://pentest-tools.com/" %}
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Suporte ao HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}