hacktricks/pentesting-web/email-injections.md

9.8 KiB

Injeções de Email


Use Trickest para construir e automatizar fluxos de trabalho facilmente com as ferramentas comunitárias mais avançadas do mundo.
Acesse hoje mesmo:

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

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

Outras formas de apoiar o HackTricks:

Injetar no e-mail enviado

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

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

# 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 será 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 do /usr/sbin/sendmail

A interface do 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á-los e vazar arquivos ou até mesmo executar comandos arbitrários. Verifique 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

Desvio de lista branca

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

Aspas

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

IPs

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

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

Outras vulnerabilidades

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

SSO de terceiros

XSS

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

Tomada de Conta

Se um serviço SSO permitir que você crie uma conta sem verificar o endereço de e-mail fornecido (como o salesforce) e então você pode usar essa conta para fazer login em um serviço diferente que confia no salesforce, você poderia acessar qualquer conta.
Obs.: o salesforce indica se o e-mail fornecido foi ou não verificado, então a aplicação deve levar em consideração essa informação.

Responder a

Você pode enviar um e-mail usando De: empresa.com e Responder a: atacante.com e se houver alguma resposta automática 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 Dura

Certos serviços, como a AWS, implementam um limite conhecido como Taxa de Rejeição Dura, geralmente definido em 10%. Esta é uma métrica crítica, especialmente para serviços de entrega de e-mail. Quando essa taxa é excedida, o serviço, como o serviço de e-mail da AWS, pode ser suspenso ou bloqueado.

Uma rejeição dura refere-se a um e-mail que foi devolvido ao remetente porque o endereço do destinatário é inválido ou inexistente. Isso pode ocorrer por vários motivos, como o e-mail sendo enviado para um endereço inexistente, um domínio que não é real, ou a recusa do servidor do destinatário em aceitar e-mails.

No contexto da AWS, se você enviar 1000 e-mails e 100 deles resultarem em rejeições duras (por motivos como endereços ou domínios inválidos), isso significaria uma taxa de rejeição dura de 10%. Alcançar ou exceder essa taxa pode acionar o bloqueio ou suspensão das capacidades de envio de e-mail da AWS SES (Simple Email Service).

É crucial manter uma baixa taxa de rejeição dura para garantir um serviço de e-mail ininterrupto e manter a reputação do remetente. Monitorar e gerenciar a qualidade dos endereços de e-mail em suas listas de envio pode ajudar significativamente a alcançar esse objetivo.

Para obter informações mais detalhadas, a documentação oficial da AWS sobre o tratamento de rejeições e reclamações pode ser consultada em AWS SES Bounce Handling.

Referências

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

Outras maneiras de apoiar o HackTricks:


Use Trickest para construir e automatizar fluxos de trabalho facilmente com as ferramentas comunitárias mais avançadas do mundo.
Tenha Acesso Hoje:

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