LoginSignup
0
0

はじめに

ずっと前に見つけたメールアドレスのXSSの話。
少し珍しいので今更ながら記録に残しておくけど、結論としては、ちゃんと念のためにHTMLエンコードしていれば脆弱性診断で指摘されることはなかった。という内容です。


Webアプリケーションの仕組み

ユーザ登録機能の最初のメールアドレス仮登録画面だったかな...(記憶が曖昧だけど...)

  1. 入力データとして、メールアドレスを取得
  2. メールアドレスを元にAddressクラスのインスタンスを生成
  3. XSSを発動するようなメールアドレスとして不適切な書式の場合は、Addressクラス生成に失敗して、Exceptionが発生する
  4. エラーが発生した場合は、単純な「エラーです」のみ表示(入力データは使われない)
  5. 正常な場合は、そのままメールアドレス宛にメールを送信して、終了。
  6. 最後に入力データ(メールアドレス)を画面上に(HTMLエンコードせずに)表示して終了

最後にHTMLエンコードしていないのは、XSSを発動するようなメールアドレスなら、途中の例外発生で処理が中断されるので、必要ないということ。

eMailXSS.png


突破方法

ということで

"コメント" <メールアドレス>

というメールアドレスの適切な書式を使って突破できました。

具体的には

"<s>XSS</s>" <メールアドレス>

な感じ


結論

文頭でも記述したけど、念のためにHTMLエンコードすることはとても重要ということ。


以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0