LoginSignup
6
2

More than 5 years have passed since last update.

Yet Another XSS on Amazon

Posted at

本記事は脆弱性"&'<<>\ Advent Calendar 2016の14日目の記事です。

昨年の脆弱性"&'<<>\ Advent Calendar 2015ではAmazonにXSSを2つ報告した記事を書きましたが、これの2つ目のXSSに類似したXSSを最近またAmazonに発見・報告したお話です。

概要

screenshot_alert_1.png

screenshot_html_with_box.png

スクリーンショットの通り、www.amazon.co.jpの検索バーから'><script>alert(1)</script> と検索するだけで起きる反射型XSSです。

<div data-ad-details='{"adPlacementMetaData": {"searchTerms": "<the_search_query>", ...}}'>

という風にシングルクオートで囲ったattributeに検索クエリを含むJSONを書き込んでいる箇所で、シングルクオートがエスケープされていないことが問題でした。

<div data-ad-details='{"adPlacementMetaData": {"searchTerms": "'><script>alert(1)</script>", ...}}'>

このようにJSONやJavaScriptの中に含まれる文字列では、問題を引き起こしている'を含め検索クエリ全体をUnicode Escape Sequenceに変換して\x27\x3e\x3cscript\x3ealert\x281\x29\x3c\x2fscript\x3eとするのが安全なエスケープ方法です。

<div data-ad-details='{"adPlacementMetaData": {"searchTerms": "\x27\x3e\x3cscript\x3ealert\x281\x29\x3c\x2fscript\x3e", ...}}'>

jjencode yet again

冒頭で以前発見したXSSに類似していると書いたのは、これも検索の結果Amazonの商品が1つ以上ヒットしないと問題の箇所が出力されず、XSSが起きないという性質のためです。今回も"High Alert Status"というレーベルの"Degree of the Streets Volume 1"というアルバムに収録されている"Script Ta Unscripted"という楽曲が仕事をしてくれたおかげで'><script>alert(1)</script>によりXSSが確認できました。(画像1枚目)

なので、今回もjjencodeなどで検索を邪魔しないようにして<script>タグを注入することで任意のJavaScriptを仕込むことができました。

screenshot_alert_document.domain.png

2016/12/9に報告し、1日で修正されました。ちなみに、その修正方法が少し変わっていて、検索クエリをbase64で出力するというものでした。

screenshot_html_base64_with_box.png

% echo -n 'Jz48c2NyaXB0PmFsZXJ0KDEpPC9zY3JpcHQ+' | base64 -D
'><script>alert(1)</script>

結論・所感

Amazonにバグバウンティ来ないのか (575)

6
2
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
6
2