数カ月前、support.apple.comドメイン上でXSSを見つけ報告しました。頑張ってalert出したXSSだったので紹介します。ちなみに修正されてから公開しているのでここに書いてある方法を今試しても再現しません。脆弱性が存在したのは以下のページです。(今は全く違うサイトになっています。)https://support.apple.com/kb/index?page=search&locale=en_US&product=&q=&src=support_site.kbase.search.searchresults画像の様に入力フォームが存在します。この検索フォームに「zzz」という適当な文字列を入力すると以下の様な内容のタグが生成されているのが分かります。</a>次に検索フォームに「zzz”」という文字列を入れる。ここでダブルクォーテーションがエスケープされていない事が分かります。</a>ダブルクォートが使えます。</a>生成されたタグに、「)」(閉じ括弧)がない。単純でも無いってことなのか。「;」は反映されている。今回、「)」(閉じ括弧)は使えないようです。惜しいのにあと一歩及ばない。alert(1)したいのに・・・。alert出来なければXSSではないここで思い出したい。javascript.</a>Bypassすることが出来るということを。フォームに「zzz”%29;」を入力。%29は「)」(閉じ括弧)ですね。</a>上手くいかない・・・。いうかフォームに入力した%29が勝手に「)」にデコードされているしと少し悩み閃く。</a>OK!これで良し。%25が「%」にデコードされ結果として%29が出来ました。results」というリンクにマウスオーバーすると以下の様なリンクが生成されていることが分かります。javascript:disambigutionManageAnswerClick(“https://store.apple.com/us/search?find=zzz”);”,”AppleStore”)閉じ括弧が現れました。「()」も先ほどと同じようにパーセントエンコードされた物を使用します。邪魔な「”,”AppleStore”)」をコメントアウトしなければなりません。(無論、コメントアウトせずとも工夫すれば何とかなる。</a>ん?「//」が消えている?どうやらこいつも「()」と同じ様に「%252F」としてやらないといけないみたいです。少々面倒ですがそれが分かればゴールはもう目の前です。フォームに「zzz”%2529;alert%2528′′1′′%2529%252F%252F」を入力。これが完成形となります。result」というリンクにマウスオーバーすると以下の様なリンクが生成されていることが分かります。javascript:disambigutionManageAnswerClick(“https://store.apple.com/us/search?find=zzz”);alert(“1′′)//”,”AppleStore”)クリックすると、こんな感じです。Firefoxでクリックするとアラートが一瞬だけ出てすぐ別のページに遷移してしまうのでここだけGoogleChromeのスクリーンショットですw下手にjavascriptスキーム内でユーザの入力した値を使うとろくな事ないですねw最初の報告が2015/4/5。最初はフィードバックのページから連絡したのですが、その後メールで送った方がいいという記述をどこかで見かけたので4月14日に再度メールで送信しました。すると4月15日にAppleのセキュリティチームから「OK。この脆弱性情報は修正出来るまでくれぐれも外部に漏らさないでくれよな。」といったメールがありました。「私の中学生並の英語が読めたのか」と感心したものです。いうことでAppleのサイトに脆弱性を見つけた場合はメールから報告することをオススメします。修正を確認したのが7/17。