hacktricks/pentesting-web/email-injections.md

199 lines
12 KiB
Markdown
Raw Normal View History

# Injections d'e-mails
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
\
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour créer facilement et **automatiser des flux de travail** alimentés par les outils communautaires les plus avancés au monde.\
Obtenez un accès aujourd'hui :
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
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
2023-06-03 13:10:46 +00:00
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2023-06-03 13:10:46 +00:00
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
## Injecter dans l'e-mail envoyé
2023-06-03 13:10:46 +00:00
### Injecter Cc et Bcc après l'argument de l'expéditeur
2021-11-27 01:09:08 +00:00
```
From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com
```
2023-06-03 13:10:46 +00:00
### Injecter un argument
L'argument sera injecté dans les comptes du destinataire et du destinataire1.
2021-11-27 01:09:08 +00:00
```
From:sender@domain.com%0ATo:attacker@domain.com
```
Le message sera envoyé au destinataire d'origine ainsi qu'au compte de l'attaquant.
### Injecter l'argument du sujet
2023-06-03 13:10:46 +00:00
```
From:sender@domain.com%0ASubject:This is%20Fake%20Subject
```
Le sujet factice sera ajouté au sujet original et dans certains cas, le remplacera. Cela dépend du comportement du service de messagerie.
2023-06-03 13:10:46 +00:00
### Modifier le corps du message
Injectez un saut de ligne à deux lignes, puis écrivez votre message pour modifier le corps du message.
2021-11-27 01:09:08 +00:00
```
2023-06-03 13:10:46 +00:00
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
```
2023-06-03 13:10:46 +00:00
### Exploitation de la fonction mail() de PHP
L'exploitation de la fonction mail() de PHP est une technique couramment utilisée pour effectuer des injections d'e-mails malveillantes. Cette vulnérabilité se produit lorsque les données utilisateur ne sont pas correctement filtrées ou validées avant d'être utilisées comme arguments dans la fonction mail().
#### Injection d'e-mails
L'injection d'e-mails se produit lorsque des données non fiables sont insérées dans les en-têtes de l'e-mail, permettant ainsi à un attaquant d'exécuter du code malveillant ou de manipuler le contenu de l'e-mail. Les injections d'e-mails peuvent être utilisées pour diverses attaques, telles que le phishing, le vol d'informations sensibles ou l'exécution de commandes à distance.
#### Exemple d'exploitation
2023-06-03 13:10:46 +00:00
Voici un exemple de code vulnérable utilisant la fonction mail() de PHP :
2023-06-03 13:10:46 +00:00
```php
<?php
$to = $_POST['to'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$headers = "From: " . $_POST['from'] . "\r\n";
$headers .= "Reply-To: " . $_POST['reply-to'] . "\r\n";
2023-06-03 13:10:46 +00:00
mail($to, $subject, $message, $headers);
?>
2021-11-27 01:09:08 +00:00
```
Dans cet exemple, les données utilisateur sont directement utilisées dans les en-têtes de l'e-mail sans aucune validation ou filtrage. Cela permet à un attaquant d'injecter des en-têtes malveillants en exploitant les caractères spéciaux tels que les retours à la ligne.
2023-06-03 13:10:46 +00:00
#### Prévention
2021-11-27 01:09:08 +00:00
Pour prévenir les injections d'e-mails, il est essentiel de filtrer et de valider toutes les données utilisateur avant de les utiliser dans la fonction mail(). Voici quelques bonnes pratiques à suivre :
2023-06-03 13:10:46 +00:00
- Utilisez des fonctions de validation pour vérifier les adresses e-mail, les sujets et les autres champs pertinents.
- Échappez correctement les caractères spéciaux dans les en-têtes de l'e-mail.
- Limitez les caractères autorisés dans les champs de saisie utilisateur.
- Utilisez des bibliothèques ou des frameworks sécurisés qui fournissent des fonctions d'envoi d'e-mails sécurisées.
En suivant ces bonnes pratiques, vous pouvez réduire considérablement les risques d'exploitation de la fonction mail() de PHP.
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-03 13:10:46 +00:00
#### Le 5ème paramètre ($additional\_parameters)
2021-11-27 01:09:08 +00:00
Cette section va se baser sur **comment exploiter ce paramètre en supposant qu'un attaquant le contrôle**.
2021-11-27 01:09:08 +00:00
Ce paramètre va être ajouté à la ligne de commande que PHP va utiliser pour invoquer le binaire sendmail. Cependant, il sera nettoyé avec la fonction `escapeshellcmd($additional_parameters)`.
2021-11-27 01:09:08 +00:00
2023-06-03 13:10:46 +00:00
Un attaquant peut **injecter des paramètres supplémentaires pour sendmail** dans ce cas.
2021-11-27 01:09:08 +00:00
#### Différences dans l'implémentation de /usr/sbin/sendmail
2021-11-27 01:09:08 +00:00
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** (comme 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é.
2021-11-27 01:09:08 +00:00
2023-06-03 13:10:46 +00:00
Voici quelques exemples de différentes pages de manuel de la commande/interface sendmail :
2021-11-27 01:09:08 +00:00
2023-06-03 13:10:46 +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
2021-11-27 01:09:08 +00:00
Selon l'**origine du binaire sendmail**, différentes options ont été découvertes pour les exploiter et **exfiltrer des fichiers ou même exécuter des commandes arbitraires**. Découvrez 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)
2021-11-27 01:09:08 +00:00
2023-06-03 13:10:46 +00:00
## Injection dans le nom de l'e-mail
2022-12-29 12:18:46 +00:00
2023-06-03 13:10:46 +00:00
### Parties ignorées d'un e-mail
2022-12-29 12:18:46 +00:00
Les symboles : **+, -** et **{}** peuvent parfois être utilisés pour le marquage et ignorés par la plupart des serveurs de messagerie
2022-12-29 12:18:46 +00:00
* Par exemple : john.doe+intigriti@example.com → john.doe@example.com
2022-12-29 12:18:46 +00:00
2023-06-03 13:10:46 +00:00
Les **commentaires entre parenthèses ()** au début ou à la fin seront également ignorés
2022-12-29 12:18:46 +00:00
* Par exemple : john.doe(intigriti)@example.com → john.doe@example.com
2022-12-29 12:18:46 +00:00
2023-06-03 13:10:46 +00:00
### Contournement de la liste blanche
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-03 13:10:46 +00:00
### Guillemets
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
2023-06-03 13:10:46 +00:00
### Adresses IP
2022-12-29 12:18:46 +00:00
Vous pouvez également utiliser des adresses IP comme noms de domaine entre crochets :
2022-12-29 12:18:46 +00:00
* john.doe@\[127.0.0.1]
* john.doe@\[IPv6:2001:db8::1]
2023-06-03 13:10:46 +00:00
### Autres vulnérabilités
2022-12-29 12:18:46 +00:00
![](<../.gitbook/assets/image (296).png>)
2023-06-03 13:10:46 +00:00
## SSO tiers
2022-12-29 12:18:46 +00:00
### XSS
Certains services comme **github** ou **salesforce vous permettent de créer une **adresse e-mail avec des charges 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 une **XSS**.
2022-12-29 12:18:46 +00:00
2023-06-03 13:10:46 +00:00
### Prise de contrôle de compte
2022-12-29 12:18:46 +00:00
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.\
Notez que salesforce indique si l'e-mail fourni a été vérifié ou non, mais l'application devrait tenir compte de cette information.
2022-12-29 12:18:46 +00:00
2023-06-03 13:10:46 +00:00
## Répondre à
2022-12-29 12:18:46 +00:00
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 en raison de l'envoi de l'e-mail **à partir** d'une **adresse interne**, l'**attaquant** pourrait être en mesure de **recevoir** cette **réponse**.
2022-12-29 12:18:46 +00:00
## Taux de rebond élevé
2022-12-29 12:18:46 +00:00
Certaines applications comme AWS ont un **taux de rebond élevé** (chez AWS, il est de 10%), ce qui signifie que lorsque le service de messagerie est surchargé, le service d'e-mails est bloqué.
2022-12-29 12:18:46 +00:00
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 tous rebondi, **AWS SES** bloquera votre service.
2022-12-29 12:18:46 +00:00
Ainsi, si vous êtes capable d'**envoyer des e-mails (peut-être des invitations)** depuis l'application web vers n'importe quelle adresse e-mail, vous pourriez provoquer ce blocage en envoyant des centaines d'invitations à des utilisateurs et domaines inexistants : **Déni de service du service de messagerie**.
2022-12-29 12:18:46 +00:00
2023-06-03 13:10:46 +00:00
## Références
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
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous voulez voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2023-06-03 13:10:46 +00:00
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2023-06-03 13:10:46 +00:00
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo 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).png" alt=""><figcaption></figcaption></figure>
Utilisez [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) pour construire et **automatiser facilement** des flux de travail alimentés par les outils communautaires les plus avancés au monde.\
Obtenez un accès aujourd'hui :
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" %}