# メールインジェクション
\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**し、自動化します。\ 今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**公式のPEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * **ハッキングのトリックを共有するには、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
## 送信されたメールにインジェクトする ### 送信者引数の後にCcとBccをインジェクトする ``` From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com ``` ### 引数の注入 The message will be sent to the recipient and recipient1 accounts. ### 引数の注入 ``` From:sender@domain.com%0ATo:attacker@domain.com ``` メッセージは元の受信者と攻撃者のアカウントに送信されます。 ### Subject引数を注入する ``` From:sender@domain.com%0ASubject:This is%20Fake%20Subject ``` 偽の件名は元の件名に追加され、場合によってはそれに置き換えられます。これはメールサービスの動作に依存します。 ### メッセージの本文を変更する 2行の改行を挿入し、その後にメッセージの本文を書いて、メッセージの本文を変更します。 ``` From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message. ``` ### PHP mail() 関数の悪用 The PHP `mail()` function is commonly used to send emails from a web application. However, if not properly secured, it can be vulnerable to email injection attacks. Email injection occurs when an attacker is able to manipulate the email headers and inject malicious content into the email. PHP mail() 関数は、ウェブアプリケーションからメールを送信するためによく使用されます。しかし、適切に保護されていない場合、メールインジェクション攻撃の脆弱性にさらされる可能性があります。メールインジェクションは、攻撃者がメールヘッダーを操作し、悪意のあるコンテンツをメールに注入することができる場合に発生します。 An email injection attack can have serious consequences. It can allow an attacker to send spam emails, perform phishing attacks, or even execute arbitrary code on the server. To prevent email injection, it is important to properly sanitize and validate user input before using it in the `mail()` function. メールインジェクション攻撃は重大な影響をもたらす可能性があります。攻撃者はスパムメールを送信したり、フィッシング攻撃を行ったり、サーバー上で任意のコードを実行したりすることができます。メールインジェクションを防ぐためには、`mail()` 関数で使用する前に、ユーザーの入力を適切にサニタイズ(無害化)および検証することが重要です。 Here are some best practices to prevent email injection: 以下は、メールインジェクションを防ぐためのベストプラクティスです。 1. **Validate user input**: Ensure that user input is properly validated and sanitized before using it in the `mail()` function. Use input validation techniques such as regular expressions or input filters to ensure that the input does not contain any malicious characters. **ユーザーの入力を検証する**: `mail()` 関数で使用する前に、ユーザーの入力が適切に検証およびサニタイズされていることを確認します。正規表現や入力フィルタなどの入力検証技術を使用して、入力に悪意のある文字が含まれていないことを確認します。 2. **Separate email headers**: When constructing email headers, make sure to separate the header fields from the user input using appropriate delimiters. This prevents the user input from being interpreted as part of the email headers. **メールヘッダーを分離する**: メールヘッダーを構築する際には、適切な区切り文字を使用してヘッダーフィールドとユーザーの入力を分離するようにします。これにより、ユーザーの入力がメールヘッダーの一部として解釈されることを防ぎます。 3. **Use email libraries**: Instead of directly using the `mail()` function, consider using email libraries or frameworks that provide built-in protection against email injection attacks. These libraries often have built-in sanitization and validation mechanisms. **メールライブラリを使用する**: `mail()` 関数を直接使用する代わりに、メールインジェクション攻撃に対する組み込みの保護機能を提供するメールライブラリやフレームワークを使用することを検討してください。これらのライブラリには、しばしば組み込みのサニタイズおよび検証メカニズムがあります。 By following these best practices, you can mitigate the risk of email injection attacks and ensure the security of your web application. これらのベストプラクティスに従うことで、メールインジェクション攻撃のリスクを軽減し、ウェブアプリケーションのセキュリティを確保することができます。 ```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 ] } } ``` #### 第5パラメーター($additional\_parameters) このセクションでは、**攻撃者がこのパラメーターを制御していると仮定して、どのように悪用できるか**について説明します。 このパラメーターは、PHPがバイナリsendmailを呼び出すために使用するコマンドラインに追加されます。ただし、関数`escapeshellcmd($additional_parameters)`でサニタイズされます。 攻撃者は、この場合に**sendmailのための追加パラメーターを注入**することができます。 #### /usr/sbin/sendmailの実装の違い **sendmail**インターフェースは、システムにインストールされているMTAメールソフトウェア(Sendmail、Postfix、Eximなど)によって提供されます。基本的な機能(-t -i -fパラメーターなど)は、互換性のために**同じ**ですが、インストールされているMTAによっては、**その他の機能やパラメーター**は大きく異なります。 以下は、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 **sendmailの起源によって**、それらを悪用して**ファイルを漏洩させたり、任意のコマンドを実行したり**するためのさまざまなオプションが発見されています。詳細は、[**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)を参照してください。 ## メール名へのインジェクション ### メールの無視される部分 記号:**+、-**、**{}**は、稀な場合にタグ付けや無視されることがあります。 - 例:john.doe+intigriti@example.com → john.doe@example.com **丸括弧()で囲まれたコメント**は、先頭または末尾にあっても無視されます。 - 例:john.doe(intigriti)@example.com → john.doe@example.com ### ホワイトリストの回避
### 引用符
### IPアドレス IPアドレスをドメイン名として角括弧で囲むこともできます: - john.doe@\[127.0.0.1] - john.doe@\[IPv6:2001:db8::1] ### その他の脆弱性 ![](<../.gitbook/assets/image (296).png>) ## サードパーティのSSO ### XSS **github**や**salesforce**などの一部のサービスでは、**XSSペイロードを含むメールアドレスを作成**することができます。このプロバイダーを使用して他のサービスにログインできる場合、このサービスがメールを正しくサニタイズしていない場合、**XSS**を引き起こすことができます。 ### アカウント乗っ取り **salesforce**のような**SSOサービス**が、与えられたメールアドレスを確認せずにアカウントを作成することを許可してくれる場合、そのアカウントを**信頼している別のサービス**にログインすることができます。これにより、任意のアカウントにアクセスできます。\ なお、salesforceは与えられたメールが確認されたかどうかを示していますが、アプリケーションはこの情報を考慮する必要があります。 ## Reply-To _**From: company.com**_と_**Replay-To: attacker.com**_を使用してメールを送信し、メールが**内部アドレス**から送信されたために**自動返信**が送信される場合、**攻撃者**はその**応答**を**受け取る**ことができるかもしれません。 ## ハードバウンス率 AWSなどの一部のアプリケーションには、**ハードバウンス率**(AWSでは10%)があり、メールサービスが過負荷になるとブロックされます。 **ハードバウンス**とは、永久的な理由で配信できなかった**メール**のことです。メールアドレスが偽のアドレスであるか、メールドメインが実在しないドメインであるか、またはメール受信者のサーバーが**メールを受け入れない**場合などが考えられます。つまり、1000通のメールのうち100通が偽であるか無効であり、それによってすべてのメールがバウンスした場合、**AWS SES**はサービスをブロックします。 したがって、Webアプリケーションから任意のメールアドレスにメール(おそらく招待状)を送信できる場合、存在しないユーザーやドメインに何百もの招待状を送信することで、このブロックを引き起こすことができます:メールサービスのDoS攻撃。 ## 参考文献 - [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)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!** * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をご覧ください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**し、自動化することができます。 今すぐアクセスを取得してください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}