スパムメール踏み台攻撃@PHP技術
スパムメール踏み台攻撃とは、メールフォームを使用しているサイトの中で、フォームから送信メールアドレスを指定できる場合、リクエストを偽装することでスパムメールを送る攻撃です。
- スパムメール踏み台攻撃 攻撃側
メールフォームの宛先をhiddenで送っています。
ということは、リンク先でtoという名前で宛先を放り込む口が開いてるという予想がつきます。
脆弱なコードは以下になります。
<?php if (!empty($_POST['dosend'])) { mb_send_mail($_POST['to'], $_POST['subject'], $_POST['body'], "From:".$_POST['from']); header('Location:http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']); exit; } header("Content-Type:text/html; charset=utf-8"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> (メールフォーム) <input type="hidden" name="to" value="aaa@aaa.aaa"><br> </html>
そこで、リクエストを自動生成してアクセスすることを繰り返せば簡易スパムメールの完成です。
この攻撃の検証をするのにメールサーバーが必要なので実際にはメール送信できませんでしたが、気を付けるべきところは必要以外のインターフェースを開けないことだと思います。
- スパムメール踏み台攻撃 防御側
とりあえず、防御策を考えてみます。
でしょうか?
回答としてあったのは、
- ホワイトリスト
- 同一IPからの利用回数制限
- データの整合性チェック
です。
ホワイトリストはわかります。配列化しちゃってマッチすればいいです。
同一IPからの利用制限ってどうするのでしょうか?Apacheでファイルを時間あたりに読み込まれる回数にリミットかけられるのかな…もしくはメールサーバー側でしょうか
データの整合性チェックは…あまり効果がわかりません。業者って有効なメールアドレスリストみたいなのを持っているとすれば、そのリストに列挙されているメールアドレスは全て"正しいメールアドレスである"という判断になる気がします。無作為送信に対抗するなら有効だとは思います。