Contenu connexe
Plus de Masato Kinugawa (6)
バグハンターの哀しみ
- 47. DOM based XSS ❶
https://web.archive.org/web/20130904143057/http://www.
benesse.co.jp/s/land/pass/
jQuery("#nav-pw li a, a.tab-link")
.bind("click touchstart", function(event){
setTimeout(function(){
hash = location.hash;
if (hash != "" && jQuery(hash).length) {
//省略
}
}, 500);
});
- 48. DOM based XSS ❶
特定のリンクのクリック時に イベント
を動作させる
jQuery("#nav-pw li a, a.tab-link")
.bind("click touchstart", function(event){
...
- 49. 特定のリンク
<div id="nav-pw">
<ul>
<li id="nav-first"><a href="#first-login"><img
src="img/nav_pw_01.png" width="260" height="50" alt="
はじめてログインするかたへ"></a></li>
<li id="nav-passmodif"><a href="#passmodif"><img
src="img/nav_pw_02.png" width="270" height="50" alt="
パスワードを変更(へんこう)したい"></a></li>
<li id="nav-passlost"><a href="#passlost"><img
src="img/nav_pw_03.png" width="270" height="50" alt="
パスワードを忘(わす)れたので再発行(さいはっこう)したい
...
jQuery("#nav-pw li a, a.tab-link")
どれも # へのリンク
- 50. これを踏まえ
jQuery("#nav-pw li a, a.tab-link")
.bind("click touchstart", function(event){
setTimeout(function(){
hash = location.hash;
if (hash != "" && jQuery(hash).length) {
//省略
}
}, 500);
});
もう一度よくみてほしい
- 51. これを踏まえ
jQuery("#nav-pw li a, a.tab-link")
.bind("click touchstart", function(event){
setTimeout(function(){
hash = location.hash;
if (hash != "" && jQuery(hash).length) {
//省略
}
}, 500);
});
0.5秒の間にhashは変えられる!
もう一度よくみてほしい
- 52. 現在のソース
hash = location.hash;
// 2013.10.4 XSS対応
if(hash == "#first-login"||
hash == "#passmodif" ||
hash == "#passlost") {
}else {
hash = "";
}
if (hash != "" && jQuery(hash).length) {
...
http://www.benesse.co.jp/s/land/pass/ 内のtabs.jsを参照
!
- 53. DOM based XSS ❷
<script type="text/javascript">
$(document).ready(function(){
result = "./answer/answer_" +
$.query.get('result') + ".html";
$("#answer_box").load(result);
});
</script>
...
<div id="answer_box"></div>
resultというパラメータからパスを組立→
そのURLのレスポンスをページに書き出す
- 54. DOM based XSS ❷
パスは同一ドメイン内に制限、セーフ?
<script type="text/javascript">
$(document).ready(function(){
result = "./answer/answer_" +
$.query.get('result') + ".html";
$("#answer_box").load(result);
});
</script>
...
<div id="answer_box"></div>
https://web.archive.org/web/20120329044331/http://wm.benesse.ne.jp/
contents/oyashindan/answer.html?