15 KiB
メールインジェクション
Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化します。
今すぐアクセスを取得:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?サブスクリプションプランをチェックしてください!
- The PEASS Familyをご覧ください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterで私をフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricksリポジトリ と 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:
以下は、メールインジェクションを防ぐためのベストプラクティスです。
-
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()
関数で使用する前に、ユーザーの入力が適切に検証およびサニタイズされていることを確認します。正規表現や入力フィルタなどの入力検証技術を使用して、入力に悪意のある文字が含まれていないことを確認します。 -
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.
メールヘッダーを分離する: メールヘッダーを構築する際には、適切な区切り文字を使用してヘッダーフィールドとユーザーの入力を分離するようにします。これにより、ユーザーの入力がメールヘッダーの一部として解釈されることを防ぎます。
-
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.
これらのベストプラクティスに従うことで、メールインジェクション攻撃のリスクを軽減し、ウェブアプリケーションのセキュリティを確保することができます。
# 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 ]
}
}
第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を参照してください。
メール名へのインジェクション
メールの無視される部分
記号:+、-、**{}**は、稀な場合にタグ付けや無視されることがあります。
- 例: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]
その他の脆弱性
サードパーティの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://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 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyをご覧ください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 [Discordグループ](https://discord.gg/hRep Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築し、自動化することができます。 今すぐアクセスを取得してください:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}