hacktricks/pentesting-web/email-injections.md

170 lines
9.7 KiB
Markdown

# Injeções de Email
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir facilmente e **automatizar fluxos de trabalho** 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" %}
<details>
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Injetar em 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
```bash
# 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:
* Sendmail MTA: http://www.sendmail.org/\~ca/email/man/sendmail.html
* Postfix MTA: http://www.postfix.org/mailq.1.html
* Exim MTA: https://linux.die.net/man/8/eximReferences
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**](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
* Por exemplo: john.doe+intigriti@example.com → john.doe@example.com
**Comentários entre parênteses ()** no início ou no final também serão ignorados
* Por exemplo: john.doe(intigriti)@example.com → john.doe@example.com
### Desvio da lista branca
<figure><img src="../.gitbook/assets/image (812).png" alt="https://www.youtube.com/watch?app=desktop&#x26;v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
### Aspas
<figure><img src="../.gitbook/assets/image (626).png" alt="https://www.youtube.com/watch?app=desktop&#x26;v=4ZsTKvfP1g0"><figcaption></figcaption></figure>
### 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](<../.gitbook/assets/image (1131).png>)
## 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 estão sanitizando** corretamente o e-mail, você poderia causar **XSS**.
### Tomada de Conta
Se um **serviço SSO** permite 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 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 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, consulte a documentação oficial da AWS sobre o tratamento de rejeições e reclamações em [AWS SES Bounce Handling](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notification-contents.html#bounce-types).
## Referências
* [https://resources.infosecinstitute.com/email-injection/](https://resources.infosecinstitute.com/email-injection/)
* [https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
* [https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view](https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view)
* [https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0](https://www.youtube.com/watch?app=desktop\&v=4ZsTKvfP1g0)
<details>
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Obtenha o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas comunitárias mais avançadas do mundo.\
Acesse hoje:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}