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

9.2 KiB
Raw Blame History

Bypasses de 403 & 401

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Configuração imediatamente disponível para avaliação de vulnerabilidade & pentesting. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas & recursos que vão desde reconhecimento até relatórios. Não substituímos pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção & exploração para dar a eles mais tempo para investigar mais a fundo, obter shells e se divertir.

{% embed url="https://pentest-tools.com/" %}

Fuzzing de Verbos/Métodos HTTP

Tente usar verbos diferentes para acessar o arquivo: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK

  • Verifique os cabeçalhos de resposta, talvez alguma informação possa ser dada. 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ê possa ver também os cabeçalhos adicionados por proxies intermediários que podem ser úteis.

Fuzzing de Cabeçalhos HTTP

  • Altere o cabeçalho Host para algum valor arbitrário (que funcionou aqui)

  • Tente usar outros User Agents para acessar o recurso.

  • Fuzz Cabeçalhos HTTP: Tente usar Cabeçalhos de Proxy HTTP, autenticação básica HTTP e força bruta NTLM (com apenas algumas combinações) e outras técnicas. Para fazer tudo isso, criei a ferramenta 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 burlar 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 do HTTP Request Smuggling ou cabeçalhos hop-by-hop.
  • Fuzz cabeçalhos HTTP especiais procurando por respostas diferentes.
  • Fuzz cabeçalhos HTTP especiais enquanto faz fuzzing de Métodos HTTP.
  • Remova o cabeçalho Host e talvez você consiga burlar a proteção.

Fuzzing de Caminho

Se /caminho estiver bloqueado:

  • Tente usar /%2e/caminho _(se o acesso estiver bloqueado por um proxy, isso pode burlar a proteção). Tente também_** /%252e**/caminho (codificação de URL dupla)
  • Tente bypass Unicode: /%ef%bc%8fcaminho (Os caracteres codificados em URL são como "/") então, quando decodificados, será //caminho e talvez você já tenha burlado a verificação de nome /caminho
  • Outros bypasses de caminho:
  • site.com/segredo > HTTP 403 Proibido
  • site.com/SEGREDO > HTTP 200 OK
  • site.com/segredo/ > HTTP 200 OK
  • site.com/segredo/. > HTTP 200 OK
  • site.com//segredo// > HTTP 200 OK
  • site.com/./segredo/.. > HTTP 200 OK
  • site.com/;/segredo > HTTP 200 OK
  • site.com/.;/segredo > HTTP 200 OK
  • site.com//;//segredo > HTTP 200 OK
  • site.com/segredo.json > HTTP 200 OK (ruby)
  • Use toda esta lista nas seguintes situações:
  • /FUZZsegredo
  • /FUZZ/segredo
  • /segredoFUZZ
  • Outros bypasses de API:
  • /v3/dados_usuarios/1234 --> 403 Proibido
  • /v1/dados_usuarios/1234 --> 200 OK
  • {“id”:111} --> 401 Não autorizado
  • {“id”:[111]} --> 200 OK
  • {“id”:111} --> 401 Não autorizado
  • {“id”:{“id”:111}} --> 200 OK
  • {"user_id":"<id_legit>","user_id":"<id_vitima>"} (Poluição de Parâmetro JSON)
  • user_id=ID_ATACANTE&user_id=ID_VITIMA (Poluição de Parâmetro)

Manipulação de Parâmetros

  • Altere 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é teste se ele suporta 2.0.

Outros Bypasses

  • Obtenha o IP ou CNAME do domínio e tente contatá-lo diretamente.
  • Tente sobrecarregar o servidor enviando requisições GET comuns (Funcionou para este cara com o Facebook).
  • Altere o protocolo: de http para https, ou de https para http
  • Vá para 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: 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

Ferramentas Automáticas

Configuração imediatamente disponível para avaliação de vulnerabilidade & pentesting. Execute um pentest completo de qualquer lugar com mais de 20 ferramentas & recursos que vão desde reconhecimento até relatórios. Não substituímos pentesters - desenvolvemos ferramentas personalizadas, módulos de detecção & exploração para dar a eles mais tempo para investigar mais a fundo, explorar sistemas e se divertir.

{% embed url="https://pentest-tools.com/" %}

Aprenda hacking em AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: