SlideShare a Scribd company logo
1 of 59
Download to read offline
バグハンター
の哀しみ
Masato Kinugawa
か な
自己紹介
Masato Kinugawa
孤独のバグハンター
XSSだけが友達
普段のお仕事
職場 自宅
勤務時間 やる気がある時
仕事 セキュリティバグを探す
収入 Bug Bounty
➡これだけでやっていける?
去年の年収
去年の年収
41050707 円
去年の年収
41050707 円
(8進数)
あかるい話は
ここまでだ!
話すこと
前
インターネットを
止められた話
後 哀しいバグ
インターネットを
止められた話
概要
BenesseのサイトのXSSを探した
自宅のネット回線がとまった
紆余曲折あり
➡なぜBenesseのXSSを探していたか?
2013年夏
U+2028/2029を使ったDOM based XSS
の可能性に気付いた
http://masatokinugawa.l0.cm/2013/09/u2028
u2029.domxss.html
アバウトな正規表現を書くと簡単にハマる
詳細はBlogで:U+2028/2029とDOM based XSS
影響を調べていた
ハマってる人多いかも?
ということで
調査方法
❶ URLの#以降にU+2028とDOM
based XSSが起き得る文字列をつけて
まわる
❷ 変なエラーがでないかみる
http://host/#[U+2028]'"><svg/onload=alert(1)>
すると
Benesseのサイトにメチャ普通のDOM
based XSSがあった
https://web.archive.org/web/20130723155109/http://manabi.benes
se.ne.jp/#"><svg/onload=alert(1)>
function writeAccesskeyForm(){
var htm = '';
var ownURI = location.href;
//略
htm+= '<input type="hidden" name="backurl"
value="' + ownURI + '">';
//略
document.write(htm);
}
writeAccesskeyForm();
それから
2013/08/05 報告
2013/08/06 応答
"この度は、「Benesseマナビジョン」の脆弱性をご指摘
いただき、誠にありがとうございます。 至急こちらでも
事実を確認の上、対応を進めるようにいたします。 この
度はご連絡いただき誠にありがとうございました。"
2013/8下旬 修正を確認
この対応を受け
修正する姿勢、
報告を受け入れる姿勢を感じた
別のとこも探して報告しよう!
これが XSS-Nightmare の
はじまりであった…
探した
普通のReflected XSSがすぐみつかった
この度は、新たに3件のXSS脆弱性をご指摘いただき
、 誠にありがとうございます。 今回についても弊社
でも事実確認の上、 鋭意対策を進めさせていただき
ます。 前回に引き続き、大変貴重なご指摘を賜りま
したこと、 重ねがさね御礼申し上げます。
2013/08/28 報告
2013/08/30 応答
同じころ
manabi.benesse.ne.jpに突然アクセス
できなくなる
IPを変えるとアクセスできるようになる
詳しくみると
➡検査のリクエストが原因で
アクセス拒否してる?
そういうこともあるだろう
(問題の報告のついでに)一応連絡:
「検査のリクエストでアク禁してるかもし
れないけど報告の通りなのでよろしく」
後日
修正が不適切であるとのこと、 ご指摘ありがとう
ございます。 確認・検討のうえ、 対応を進めさせ
ていただきます。 誠にありがとうざいました。
➡アク禁のことはスルー
まあ伝わっているよね
その後も報告を続ける
修正方法が悪く何度も不完全だと伝える
その確認のたびにアクセス拒否…
IPを変更して確認を繰り返す
そして
2013/9/7夕方に事件は起きた
なにが起きた?!
最初は障害や機器の故障を疑った
ところがどれも違う
プロバイダのメールを見ると
警告がきていることに気付く
そこから不審なアクセスがあった、ウイルスに
感染などして踏み台になっていないか
不審なアクセス
思い当たると言えば思い当たる
警告メールの前後に脆弱性を検査・
報告したサービス:
Google、excite、Benesse
(というか、日頃やっていること、
アクセスだけみたら全部不審)
➡これまで報告していなかったサービス
アクセス拒否もあるし、どう考えても怪しい
ねじれ
ご指摘、誠にありがとうございます。 9月6日、9月7
日にいただきましたメールの内容についても 弊社でも
確認のうえ、鋭意対策を進めさせていただきます。 た
いへん貴重なご指摘を賜りましたこと、 重ねがさね御
礼申し上げます。
9月9日、返信では相変わらず感謝:
@niftyからお手紙が届く
攻撃行為をしないという誓約書が同封
待ってくれ、違うんだ…
Benesse/@niftyに
電話でコンタクト
両「セキュリティ上の理由で答えられない」
僕「家のネットが止まって困っている。
事実関係を確認させてほしい。」
らちが明かない!!
まともに仕事ができないのでWiMAXを契約
テザリングを使ってすがる思いでBlogに書く
もうだめだ…
そんなときに現れた救世主 それが
http://masatokinugawa.l0.cm/2013/09/xss.benesse.html
たぶんXSSが理由でインターネットがとまった
徳丸先生である!
DMを頂く
ブログ読みました。この件について、
ベネッセと連絡をとっています。メー
ルアドレスを教えて頂けますか?
あなたが神か!
その後のやりとり
ベネッセはセキュリティ業者に侵入
検知システムの運用を委託していて、
攻撃を検知すると、ブロックやISP
への連絡をしているそう。
ふむふむ
その後のやりとり
そのフローにひっかかり、
IPS(侵入防止システム)検知
➡ セキュリティベンダの監視
➡ ISPへの連絡
➡ ISPによる遮断 となったようだ
なるほど~
その後のやりとり
やりとりの結果、ベネッセからISPに
連絡することは可能と言われた。
報告時点のIPアドレスを教えてもらえ
れば報告と照合するとのこと。
ええ、記録あるかな…
あった
日頃、自ドメイン(vulnerabledoma.in)で
ブラウザの動作テストをしているので、
自分のアクセスが毎日のようにあった!
8月28日: XX.X.XX.2
8月29日: XX.X.XX.25
8月30日: XX.X.XX.195
8月31日: XX.X.XX.14
9月01日: XX.X.XX.14
....
こんなかんじです:
連絡後
「不正アクセス情報の取り下げ」
および「停止についての解除のお願
い」をしたとのこと。あとはプロバイ
ダの判断になる。
ありがたい・・
そしてついに
感涙
9月13日夕方(停止から約1週間)、
インターネット再開!
改めて
徳丸さんの協力なしには自力で事情を
説明することは難しかったです。
この時は本当にありがとうございました!
※ みみりん では
ありません
そんな徳丸先生の本が
絶賛発売中だ!
http://www.amazon.co.jp/dp/
4822279987/
http://www.amazon.co.jp/dp/
4797361190/
今すぐ購入!!
大きな会社の中は複雑
なんだろうなぁ…
問題を通して感じたこと
そりゃ情報の持ち出し
も起こるよな…
他人事ではない
あなたにBenesseのサイトへXSSっぽい
リクエストを送らせるリンクを送る
http://manabi.beness(略)/?<script>alert(1)</script>
サイトが利用不可に
最悪インターネットが止まる?!
あなたがアクセス
※危険なのでリンクできない
侵入検知会社の間違い
攻撃かどうかを精査していない
攻撃の性質を理解していない
XSSの対処にIPブロックする意味を問いたい
サイト全体を止める方がまだわかる
今回は報告と照合すれば済んだはず
根は遠隔操作事件の問題に近い?
➡根本を修正する手助けをするべき
XSSの対処にはそれしかないと思う
XSSの脅威
勝手な操作の実行
機密情報の奪取
ページ内容変更によるフィッシング
XSSの脅威
勝手な操作の実行
機密情報の奪取
ページ内容変更によるフィッシング
ネット回線の停止
教訓:世の中には
つついてはいけないものがある
実は最近も止められた!
料金の未納で。
(勘違いで手続きができてなかった)
世間は厳しい…
哀しいバグ
ネット再開後
Benesseに事前にIPアドレスを伝えれば、
検査をしてもよいということになった
100件近い脆弱性を報告
(全てをわずかな期間で修正してくれた。
この姿勢は本当に素晴らしい。)
その結果
➡今回はこの中から2つ紹介!
DOM based XSS ❶
https://web.archive.org/web/20130904143057/http://www.
benesse.co.jp/s/land/pass/
jQuery("#nav-pw li a, a.tab-link")
.bind("click touchstart", function(event){
setTimeout(function(){
hash = location.hash;
if (hash != "" && jQuery(hash).length) {
//省略
}
}, 500);
});
DOM based XSS ❶
特定のリンクのクリック時に イベント
を動作させる
jQuery("#nav-pw li a, a.tab-link")
.bind("click touchstart", function(event){
...
特定のリンク
<div id="nav-pw">
<ul>
<li id="nav-first"><a href="#first-login"><img
src="img/nav_pw_01.png" width="260" height="50" alt="
はじめてログインするかたへ"></a></li>
<li id="nav-passmodif"><a href="#passmodif"><img
src="img/nav_pw_02.png" width="270" height="50" alt="
パスワードを変更(へんこう)したい"></a></li>
<li id="nav-passlost"><a href="#passlost"><img
src="img/nav_pw_03.png" width="270" height="50" alt="
パスワードを忘(わす)れたので再発行(さいはっこう)したい
...
jQuery("#nav-pw li a, a.tab-link")
どれも # へのリンク
これを踏まえ
jQuery("#nav-pw li a, a.tab-link")
.bind("click touchstart", function(event){
setTimeout(function(){
hash = location.hash;
if (hash != "" && jQuery(hash).length) {
//省略
}
}, 500);
});
もう一度よくみてほしい
これを踏まえ
jQuery("#nav-pw li a, a.tab-link")
.bind("click touchstart", function(event){
setTimeout(function(){
hash = location.hash;
if (hash != "" && jQuery(hash).length) {
//省略
}
}, 500);
});
0.5秒の間にhashは変えられる!
もう一度よくみてほしい
現在のソース
hash = location.hash;
// 2013.10.4 XSS対応
if(hash == "#first-login"||
hash == "#passmodif" ||
hash == "#passlost") {
}else {
hash = "";
}
if (hash != "" && jQuery(hash).length) {
...
http://www.benesse.co.jp/s/land/pass/ 内のtabs.jsを参照
!
DOM based XSS ❷
<script type="text/javascript">
$(document).ready(function(){
result = "./answer/answer_" +
$.query.get('result') + ".html";
$("#answer_box").load(result);
});
</script>
...
<div id="answer_box"></div>
resultというパラメータからパスを組立→
そのURLのレスポンスをページに書き出す
DOM based XSS ❷
パスは同一ドメイン内に制限、セーフ?
<script type="text/javascript">
$(document).ready(function(){
result = "./answer/answer_" +
$.query.get('result') + ".html";
$("#answer_box").load(result);
});
</script>
...
<div id="answer_box"></div>
https://web.archive.org/web/20120329044331/http://wm.benesse.ne.jp/
contents/oyashindan/answer.html?
No!
同じドメインでユーザのアップロードする
アバター画像をホストしている
画像のコメント領域などに<script>…とか書い
ておけばそのままの内容をアップロード
こうすれば
/vulnpage?result=/../../../../uploads/profile/icon.jpg%23
$(document).ready(function(){
result = "./answer/answer_" +
$.query.get('result') + ".html";
$("#answer_box").load(result);
});
➡画像のバイナリをページ内に書き出す
DEMO
http://vulnerabledoma.in/avtokyo2015/
まとめ
これからもできるだけ皆さんに迷惑を
かけないようバグを探しますので
どうぞよろしくお願いします
@kinugawamasato
masatokinugawa
[at]gmail.com
Thanks!

More Related Content

What's hot

こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpsonickun
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019Tokoroten Nakayama
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)Shota Shinogi
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~Masato Kinugawa
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法kazkiti
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホンYou_Kinjoh
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケットTakaaki Hoyo
 
MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会
MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会
MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会株式会社MonotaRO Tech Team
 
最近のBurp Suiteについて調べてみた
最近のBurp Suiteについて調べてみた最近のBurp Suiteについて調べてみた
最近のBurp Suiteについて調べてみたzaki4649
 
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみたセキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみたLINE Corporation
 
go generate 完全入門
go generate 完全入門go generate 完全入門
go generate 完全入門yaegashi
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 

What's hot (20)

こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
 
WebSocketのキホン
WebSocketのキホンWebSocketのキホン
WebSocketのキホン
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会
MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会
MonotaROが向かうクラウド活用の今後 2016-04-21 関西スタートアップAWS勉強会
 
最近のBurp Suiteについて調べてみた
最近のBurp Suiteについて調べてみた最近のBurp Suiteについて調べてみた
最近のBurp Suiteについて調べてみた
 
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみたセキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
 
go generate 完全入門
go generate 完全入門go generate 完全入門
go generate 完全入門
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 

Recently uploaded

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 

Recently uploaded (8)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 

バグハンターの哀しみ