hacktricks/pentesting-web/email-injections.md
2023-06-06 18:56:34 +00:00

11 KiB

Injeções de Email


Use Trickest para construir e automatizar fluxos de trabalho com as ferramentas da comunidade mais avançadas do mundo.
Acesse hoje:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Injetar em e-mails enviados

Injetar Cc e Bcc após o argumento do remetente

From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com

A mensagem será enviada para as contas do destinatário e destinatário1.

Injetar argumento

From:sender@domain.com%0ATo:attacker@domain.com

A mensagem será enviada para o destinatário original e para a conta do atacante.

Injetar argumento de assunto

From:sender@domain.com%0ASubject:This is%20Fake%20Subject

O assunto falso será adicionado ao assunto original e, em alguns casos, o substituirá. Isso depende do comportamento do serviço de e-mail.

Alterar o corpo da mensagem

Injete duas quebras de linha e, em seguida, escreva sua mensagem para alterar o corpo da mensagem.

From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.

Exploração da função mail() do PHP

Descrição

A função mail() do PHP é usada para enviar e-mails a partir de um servidor web. No entanto, se não for usada corretamente, pode ser explorada para enviar e-mails maliciosos ou executar comandos no servidor.

Exploração

A exploração da função mail() geralmente envolve a injeção de código malicioso no cabeçalho do e-mail. Isso pode ser feito através da manipulação de entradas de formulário que são usadas para construir o cabeçalho do e-mail.

Por exemplo, se um formulário permitir que um usuário insira um endereço de e-mail, o atacante pode inserir um cabeçalho adicional contendo código malicioso. Quando o servidor web processa o formulário e usa a entrada do usuário para construir o cabeçalho do e-mail, o código malicioso é executado.

Prevenção

Para prevenir a exploração da função mail(), é importante validar todas as entradas de formulário que são usadas para construir o cabeçalho do e-mail. Isso pode ser feito através da filtragem de caracteres especiais e da validação do formato do endereço de e-mail.

Além disso, é importante limitar o acesso à função mail() para usuários autenticados e autorizados apenas. Isso pode ser feito através da implementação de autenticação e autorização adequadas no servidor web.

# The function has the following definition:

php --rf mail

Function [ <internal:standard> function mail ] {
  - Parameters [5] {
    Parameter #0 [ <required> $to ]
    Parameter #1 [ <required> $subject ]
    Parameter #2 [ <required> $message ]
    Parameter #3 [ <optional> $additional_headers ]
    Parameter #4 [ <optional> $additional_parameters ]
  }
}

O 5º parâmetro ($additional_parameters)

Esta seção é baseada em como abusar desse parâmetro supondo que um atacante o controle.

Este parâmetro será adicionado à linha de comando que o PHP usará para invocar o binário sendmail. No entanto, ele será sanitizado com a função escapeshellcmd($additional_parameters).

Um atacante pode injetar parâmetros extras para o sendmail neste caso.

Diferenças na implementação de /usr/sbin/sendmail

A interface sendmail é fornecida pelo software de e-mail MTA (Sendmail, Postfix, Exim etc.) instalado no sistema. Embora a funcionalidade básica (como os parâmetros -t -i -f) permaneça a mesma por razões de compatibilidade, outras funções e parâmetros variam muito dependendo do MTA instalado.

Aqui estão alguns exemplos de diferentes páginas de manual do comando/interface sendmail:

Dependendo da origem do binário sendmail, diferentes opções foram descobertas para abusá-las e vazar arquivos ou até mesmo executar comandos arbitrários. Veja como em https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html

Injetar no nome do e-mail

Partes ignoradas de um e-mail

Os símbolos: +, - e {} em raras ocasiões podem ser usados para marcação e ignorados pela maioria dos servidores de e-mail

Comentários entre parênteses () no início ou no final também serão ignorados

Bypass de lista branca

Aspas

IPs

Você também pode usar IPs como nome de domínio entre colchetes:

  • john.doe@[127.0.0.1]
  • john.doe@[IPv6:2001:db8::1]

Outras vulnerabilidades

SSO de terceiros

XSS

Alguns serviços como github ou salesforce permitem que você crie um endereço de e-mail com payloads XSS nele. Se você pode usar esses provedores para fazer login em outros serviços e esses serviços não sanitizam corretamente o e-mail, você pode causar XSS.

Account-Takeover

Se um serviço SSO permite que você crie uma conta sem verificar o endereço de e-mail fornecido (como salesforce) e depois você pode usar essa conta para fazer login em um serviço diferente que confia no salesforce, você pode acessar qualquer conta.
Observe que o salesforce indica se o e-mail fornecido foi ou não verificado, mas a aplicação também deve levar em conta essa informação.

Reply-To

Você pode enviar um e-mail usando From: company.com** ** e Replay-To: attacker.com e se alguma resposta automática for enviada devido ao e-mail ter sido enviado de um endereço interno, o atacante pode ser capaz de receber essa resposta.

Taxa de rejeição difícil

Algumas aplicações como a AWS têm uma Taxa de rejeição difícil (na AWS é de 10%), que sempre que estiver sobrecarregado o serviço de e-mail é bloqueado.

Um rejeição difícil é um e-mail que não pôde ser entregue por algumas razões permanentes. Talvez o endereço de e-mail seja falso, talvez o domínio do e-mail não seja um domínio real, ou talvez o servidor do destinatário do e-mail não aceite e-mails), isso significa que de um total de 1000 e-mails, se 100 deles fossem falsos ou inválidos, isso causaria o bloqueio de todos eles, o AWS SES bloqueará seu serviço.

Portanto, se você puder enviar e-mails (talvez convites) do aplicativo da web para qualquer endereço de e-mail, poderá provocar esse bloqueio enviando centenas de convites para usuários e domínios inexistentes: DoS do serviço de e-mail.

Referências

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥


Use Trickest para criar e automatizar fluxos de trabalho com as ferramentas da comunidade mais avançadas do mundo.
Acesse hoje:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}