12 KiB
Injections d'emails
Utilisez Trickest pour construire et automatiser facilement des flux de travail alimentés par les 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" %}
☁️ 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 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.
Injecter dans un 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
Le message sera envoyé aux comptes destinataire et destinataire1.
Injecter un argument
From:sender@domain.com%0ATo:attacker@domain.com
Le message sera envoyé à la fois au destinataire original et au compte de l'attaquant.
Injecter l'argument Sujet
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 deux sauts de ligne, 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
Description
La fonction mail()
de PHP est souvent utilisée pour envoyer des e-mails à partir d'un site web. Cependant, si elle est mal utilisée, elle peut être exploitée pour injecter des e-mails malveillants ou pour effectuer des attaques de phishing.
Exploitation
L'exploitation de la fonction mail()
de PHP peut être réalisée en injectant des en-têtes d'e-mail malveillants dans les paramètres de la fonction. Les en-têtes d'e-mail sont des informations qui sont incluses dans l'e-mail, telles que l'expéditeur, le destinataire, le sujet, etc. En injectant des en-têtes d'e-mail malveillants, un attaquant peut modifier l'apparence de l'e-mail pour tromper l'utilisateur final.
Voici un exemple de code vulnérable :
<?php
$to = $_POST['to'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$headers = 'From: ' . $_POST['from'] . "\r\n" .
'Reply-To: ' . $_POST['reply-to'] . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
Dans cet exemple, les en-têtes d'e-mail sont construits à partir des entrées utilisateur sans validation ni nettoyage. Cela permet à un attaquant d'injecter des en-têtes d'e-mail malveillants en modifiant les valeurs des paramètres POST.
Contre-mesures
Pour éviter l'exploitation de la fonction mail()
de PHP, il est recommandé de :
- Valider et nettoyer les entrées utilisateur avant de les utiliser pour construire les en-têtes d'e-mail.
- Utiliser des bibliothèques de messagerie sécurisées telles que PHPMailer ou SwiftMailer qui offrent des fonctionnalités de sécurité supplémentaires.
- Limiter l'utilisation de la fonction
mail()
de PHP et utiliser plutôt des services de messagerie tiers tels que SendGrid ou Mailgun.
# 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 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 (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
En fonction de 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
Injection dans le nom de l'e-mail
Parties ignorées d'un e-mail
Les symboles : +, - et {} dans de rares occasions peuvent ê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 nom 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 utiles XSS. Si vous pouvez utiliser ces fournisseurs pour vous connecter à d'autres services et que ces services ne sanitent pas correctement l'e-mail, vous pourriez causer 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 service différent 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 également 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 parce que l'e-mail a été envoyé depuis une adresse interne, l'attaquant pourrait être en mesure de 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 bloque le service de messagerie chaque fois qu'il est surchargé.
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 domaine réel, ou peut-être que le serveur de messagerie du destinataire de l'e-mail n'accepte pas les e-mails, ce qui signifie que sur un total de 1000 e-mails, si 100 d'entre eux étaient faux ou invalides et ont causé le rebond de tous, 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 des domaines qui n'existent pas : DoS du service de messagerie électronique.
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 🎥
- 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 d'exclusivités 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.
Utilisez Trickest pour créer et automatiser facilement des workflows alimentés par les 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" %}