Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
続 Yahoo広告配信用 s.yimg.jp ドメインでのXSSの解説(JSONP XSS編)

2/7 malaさんの記事を読む

https://gist.github.com/mala/1d30e42e9e99520b7a501e9d2458eb49

  • 確かに (*.)yahoo.co.jp には制限されている。
  • (*.)yahoo.co.jpは知恵袋からヤフオクまで大量のページを持っている。
  • どこがスクリプトとしてロードされてもXSSが起きない?そんな訳なさそう。

そのときのぼやき: https://twitter.com/kinugawamasato/status/828846516882116608

2/8 JSONPを使ったXSSの発見・報告

  • (*.)yahoo.co.jpにcallback名を指定できるJSONPをみつける。
  • callback名はバリデーションがなく、好きな文字列を書ける。
  • (現在はcallbackパラメータ自体を受け取らなくなっている)

http://weather.yahoo.co.jp/weather/zoomradar/c/?callback=alert(1)//

/* CVE-2014-4671 */
alert(1)//( {"list":[],"status":40000} )

この部分をtag_pathに指定することでXSSが可能。

http://s.yimg.jp/images/listing/tool/yads/yads-iframe.html#?tag_path=http://weather.yahoo.co.jp/weather/zoomradar/c/%3Fcallback%3Dalert(1)//

2/9 修正を確認

  • tag_pathからURLをうけとらなくなった。
  • ロードされるスクリプトは //yads.yjtag.yahoo.co.jp/tag? まで固定で、クエリのみ受け取るようになった。
  • ひとまずそれ以外のURLを読むことはなくなったが...(多重縛りXSS編に続く)

ここまでのまとめ

  • (*.)example.com の任意のリソースをスクリプトとしてロードできる状況はまだ安全でないと考えるべきです。
  • JSONPがなくてもユーザがアップロードしたファイルやオープンリダイレクトがあれば攻撃スクリプトとして使えるかもしれません。
  • 似た事例として、 Content-Security-Policy: default-src *.yahoo.co.jp はこのようにバイパスされるということを覚えておきましょう。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment