59
バグハンター の哀しみ Masato Kinugawa かな

バグハンターの哀しみ

Embed Size (px)

Citation preview

Page 1: バグハンターの哀しみ

バグハンターの哀しみ

Masato Kinugawa

か な

自己紹介

Masato Kinugawa

孤独のバグハンター

XSSだけが友達

普段のお仕事

職場 自宅

勤務時間 やる気がある時

仕事 セキュリティバグを探す

収入 Bug Bounty

これだけでやっていける

去年の年収

去年の年収

41050707 円

去年の年収

41050707 円

(8進数)

あかるい話はここまでだ

話すこと

前インターネットを止められた話

後 哀しいバグ

インターネットを止められた話

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 2: バグハンターの哀しみ

自己紹介

Masato Kinugawa

孤独のバグハンター

XSSだけが友達

普段のお仕事

職場 自宅

勤務時間 やる気がある時

仕事 セキュリティバグを探す

収入 Bug Bounty

これだけでやっていける

去年の年収

去年の年収

41050707 円

去年の年収

41050707 円

(8進数)

あかるい話はここまでだ

話すこと

前インターネットを止められた話

後 哀しいバグ

インターネットを止められた話

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 3: バグハンターの哀しみ

普段のお仕事

職場 自宅

勤務時間 やる気がある時

仕事 セキュリティバグを探す

収入 Bug Bounty

これだけでやっていける

去年の年収

去年の年収

41050707 円

去年の年収

41050707 円

(8進数)

あかるい話はここまでだ

話すこと

前インターネットを止められた話

後 哀しいバグ

インターネットを止められた話

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 4: バグハンターの哀しみ

去年の年収

去年の年収

41050707 円

去年の年収

41050707 円

(8進数)

あかるい話はここまでだ

話すこと

前インターネットを止められた話

後 哀しいバグ

インターネットを止められた話

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 5: バグハンターの哀しみ

去年の年収

41050707 円

去年の年収

41050707 円

(8進数)

あかるい話はここまでだ

話すこと

前インターネットを止められた話

後 哀しいバグ

インターネットを止められた話

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 6: バグハンターの哀しみ

去年の年収

41050707 円

(8進数)

あかるい話はここまでだ

話すこと

前インターネットを止められた話

後 哀しいバグ

インターネットを止められた話

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 7: バグハンターの哀しみ

あかるい話はここまでだ

話すこと

前インターネットを止められた話

後 哀しいバグ

インターネットを止められた話

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 8: バグハンターの哀しみ

話すこと

前インターネットを止められた話

後 哀しいバグ

インターネットを止められた話

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 9: バグハンターの哀しみ

インターネットを止められた話

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 10: バグハンターの哀しみ

概要

BenesseのサイトのXSSを探した

自宅のネット回線がとまった

紆余曲折あり

なぜBenesseのXSSを探していたか

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 11: バグハンターの哀しみ

2013年夏U+20282029を使ったDOM based XSSの可能性に気付いた

httpmasatokinugawal0cm201309u2028u2029domxsshtml

アバウトな正規表現を書くと簡単にハマる

詳細はBlogでU+20282029とDOM based XSS

影響を調べていた

ハマってる人多いかもということで

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 12: バグハンターの哀しみ

調査方法

❶ URLの以降にU+2028とDOM based XSSが起き得る文字列をつけて

まわる

❷ 変なエラーがでないかみる

httphost[U+2028]gtltsvgonload=alert(1)gt

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 13: バグハンターの哀しみ

するとBenesseのサイトにメチャ普通のDOM based XSSがあったhttpswebarchiveorgweb20130723155109httpmanabibenessenejpgtltsvgonload=alert(1)gt

function writeAccesskeyForm()var htm = var ownURI = locationhref略

htm+= ltinput type=hidden name=backurl value= + ownURI + gt

documentwrite(htm)writeAccesskeyForm()

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 14: バグハンターの哀しみ

それから20130805 報告

20130806 応答この度は「Benesseマナビジョン」の脆弱性をご指摘いただき誠にありがとうございます 至急こちらでも事実を確認の上対応を進めるようにいたします この度はご連絡いただき誠にありがとうございました

20138下旬 修正を確認

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 15: バグハンターの哀しみ

この対応を受け

修正する姿勢報告を受け入れる姿勢を感じた

別のとこも探して報告しよう

これが XSS-Nightmare のはじまりであったhellip

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 16: バグハンターの哀しみ

探した普通のReflected XSSがすぐみつかった

この度は新たに3件のXSS脆弱性をご指摘いただき 誠にありがとうございます 今回についても弊社でも事実確認の上 鋭意対策を進めさせていただきます 前回に引き続き大変貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

20130828 報告

20130830 応答

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 17: バグハンターの哀しみ

同じころ

manabibenessenejpに突然アクセスできなくなる

IPを変えるとアクセスできるようになる

詳しくみると

検査のリクエストが原因でアクセス拒否してる

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 18: バグハンターの哀しみ

そういうこともあるだろう(問題の報告のついでに)一応連絡

「検査のリクエストでアク禁してるかもしれないけど報告の通りなのでよろしく」

後日

修正が不適切であるとのこと ご指摘ありがとうございます 確認検討のうえ 対応を進めさせていただきます 誠にありがとうざいました

アク禁のことはスルーまあ伝わっているよね

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 19: バグハンターの哀しみ

その後も報告を続ける

修正方法が悪く何度も不完全だと伝える

その確認のたびにアクセス拒否hellip

IPを変更して確認を繰り返す

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 20: バグハンターの哀しみ

そして

201397夕方に事件は起きた

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 21: バグハンターの哀しみ

なにが起きた

最初は障害や機器の故障を疑った

ところがどれも違う

プロバイダのメールを見ると警告がきていることに気付く

そこから不審なアクセスがあったウイルスに感染などして踏み台になっていないか

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 22: バグハンターの哀しみ

不審なアクセス

思い当たると言えば思い当たる

警告メールの前後に脆弱性を検査報告したサービス

GoogleexciteBenesse

(というか日頃やっていることアクセスだけみたら全部不審)

これまで報告していなかったサービスアクセス拒否もあるしどう考えても怪しい

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 23: バグハンターの哀しみ

ねじれ

ご指摘誠にありがとうございます 9月6日9月7日にいただきましたメールの内容についても 弊社でも確認のうえ鋭意対策を進めさせていただきます たいへん貴重なご指摘を賜りましたこと 重ねがさね御礼申し上げます

9月9日返信では相変わらず感謝

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 24: バグハンターの哀しみ

niftyからお手紙が届く

攻撃行為をしないという誓約書が同封

待ってくれ違うんだhellip

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 25: バグハンターの哀しみ

Benesseniftyに電話でコンタクト

両「セキュリティ上の理由で答えられない」

僕「家のネットが止まって困っている事実関係を確認させてほしい」

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 26: バグハンターの哀しみ

らちが明かない

まともに仕事ができないのでWiMAXを契約

テザリングを使ってすがる思いでBlogに書く

もうだめだhellipそんなときに現れた救世主 それが

httpmasatokinugawal0cm201309xssbenessehtml

たぶんXSSが理由でインターネットがとまった

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 27: バグハンターの哀しみ

徳丸先生である

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 28: バグハンターの哀しみ

DMを頂く

ブログ読みましたこの件についてベネッセと連絡をとっていますメールアドレスを教えて頂けますか

あなたが神か

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 29: バグハンターの哀しみ

その後のやりとり

ベネッセはセキュリティ業者に侵入検知システムの運用を委託していて攻撃を検知するとブロックやISPへの連絡をしているそう

ふむふむ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 30: バグハンターの哀しみ

その後のやりとりそのフローにひっかかりIPS(侵入防止システム)検知

セキュリティベンダの監視 ISPへの連絡 ISPによる遮断 となったようだ

なるほど~

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 31: バグハンターの哀しみ

その後のやりとり

やりとりの結果ベネッセからISPに連絡することは可能と言われた報告時点のIPアドレスを教えてもらえれば報告と照合するとのこと

ええ記録あるかなhellip

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 32: バグハンターの哀しみ

あった日頃自ドメイン(vulnerabledomain)でブラウザの動作テストをしているので自分のアクセスが毎日のようにあった

8月28日 XXXXX28月29日 XXXXX258月30日 XXXXX1958月31日 XXXXX149月01日 XXXXX14

こんなかんじです

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 33: バグハンターの哀しみ

連絡後

「不正アクセス情報の取り下げ」および「停止についての解除のお願い」をしたとのことあとはプロバイダの判断になる

ありがたい

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 34: バグハンターの哀しみ

そしてついに

感涙

9月13日夕方(停止から約1週間)

インターネット再開

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 35: バグハンターの哀しみ

改めて

徳丸さんの協力なしには自力で事情を説明することは難しかったです

この時は本当にありがとうございました

みみりん ではありません

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 36: バグハンターの哀しみ

そんな徳丸先生の本が絶賛発売中だ

httpwwwamazoncojpdp4822279987

httpwwwamazoncojpdp4797361190

今すぐ購入

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 37: バグハンターの哀しみ

大きな会社の中は複雑なんだろうなぁhellip

問題を通して感じたこと

そりゃ情報の持ち出しも起こるよなhellip

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 38: バグハンターの哀しみ

他人事ではない

あなたにBenesseのサイトへXSSっぽいリクエストを送らせるリンクを送る

httpmanabibeness(略)ltscriptgtalert(1)ltscriptgt

サイトが利用不可に最悪インターネットが止まる

あなたがアクセス

危険なのでリンクできない

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 39: バグハンターの哀しみ

侵入検知会社の間違い

攻撃かどうかを精査していない

攻撃の性質を理解していないXSSの対処にIPブロックする意味を問いたいサイト全体を止める方がまだわかる

今回は報告と照合すれば済んだはず根は遠隔操作事件の問題に近い

根本を修正する手助けをするべきXSSの対処にはそれしかないと思う

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 40: バグハンターの哀しみ

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 41: バグハンターの哀しみ

XSSの脅威

勝手な操作の実行

機密情報の奪取

ページ内容変更によるフィッシング

ネット回線の停止

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 42: バグハンターの哀しみ

教訓世の中には

つついてはいけないものがある

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 43: バグハンターの哀しみ

実は最近も止められた

料金の未納で

(勘違いで手続きができてなかった)

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 44: バグハンターの哀しみ

世間は厳しいhellip

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 45: バグハンターの哀しみ

哀しいバグ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 46: バグハンターの哀しみ

ネット再開後

Benesseに事前にIPアドレスを伝えれば検査をしてもよいということになった

100件近い脆弱性を報告(全てをわずかな期間で修正してくれた

この姿勢は本当に素晴らしい)

その結果

今回はこの中から2つ紹介

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 47: バグハンターの哀しみ

DOM based XSS ❶httpswebarchiveorgweb20130904143057httpwwwbenessecojpslandpass

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 48: バグハンターの哀しみ

DOM based XSS ❶

特定のリンクのクリック時に イベントを動作させる

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 49: バグハンターの哀しみ

特定のリンク

ltdiv id=nav-pwgtltulgtltli id=nav-firstgtlta href=first-logingtltimg src=imgnav_pw_01png width=260 height=50 alt=はじめてログインするかたへgtltagtltligt

ltli id=nav-passmodifgtlta href=passmodifgtltimg src=imgnav_pw_02png width=270 height=50 alt=パスワードを変更(へんこう)したいgtltagtltligt

ltli id=nav-passlostgtlta href=passlostgtltimg src=imgnav_pw_03png width=270 height=50 alt=パスワードを忘(わす)れたので再発行(さいはっこう)したい

jQuery(nav-pw li a atab-link)

どれも へのリンク

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 50: バグハンターの哀しみ

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

もう一度よくみてほしい

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 51: バグハンターの哀しみ

これを踏まえ

jQuery(nav-pw li a atab-link)bind(click touchstart function(event)setTimeout(function()hash = locationhashif (hash = ampamp jQuery(hash)length) 省略

500))

05秒の間にhashは変えられる

もう一度よくみてほしい

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 52: バグハンターの哀しみ

現在のソースhash = locationhash

2013104 XSS対応

if(hash == first-login||hash == passmodif ||hash == passlost)

else hash =

if (hash = ampamp jQuery(hash)length)

httpwwwbenessecojpslandpass 内のtabsjsを参照

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 53: バグハンターの哀しみ

DOM based XSS ❷

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

resultというパラメータからパスを組立rarrそのURLのレスポンスをページに書き出す

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 54: バグハンターの哀しみ

DOM based XSS ❷パスは同一ドメイン内に制限セーフ

ltscript type=textjavascriptgt$(document)ready(function()

result = answeranswer_ + $queryget(result) + html

$(answer_box)load(result))ltscriptgtltdiv id=answer_boxgtltdivgt

httpswebarchiveorgweb20120329044331httpwmbenessenejpcontentsoyashindananswerhtml

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 55: バグハンターの哀しみ

No同じドメインでユーザのアップロードするアバター画像をホストしている

画像のコメント領域などにltscriptgthellipとか書いておけばそのままの内容をアップロード

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 56: バグハンターの哀しみ

こうすればvulnpageresult=uploadsprofileiconjpg23

$(document)ready(function()result = answeranswer_ +

$queryget(result) + html$(answer_box)load(result)

)

画像のバイナリをページ内に書き出す

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 57: バグハンターの哀しみ

DEMOhttpvulnerabledomainavtokyo2015

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 58: バグハンターの哀しみ

まとめ

これからもできるだけ皆さんに迷惑を

かけないようバグを探しますので

どうぞよろしくお願いします

kinugawamasato

masatokinugawa[at]gmailcom

Thanks

Page 59: バグハンターの哀しみ

kinugawamasato

masatokinugawa[at]gmailcom

Thanks