Submit Search
Upload
今さら聞けないXSS
•
6 likes
•
7,602 views
Sota Sugiura
Follow
XSSの概要と対策をざっくりまとめてみた。 社内勉強会用資料。
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 61
Download now
Download to read offline
Recommended
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
Hiroshi Tokumaru
XSS再入門
XSS再入門
Hiroshi Tokumaru
Proxy War
Proxy War
zaki4649
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
kwatch
SQLインジェクション再考
SQLインジェクション再考
Hiroshi Tokumaru
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
Hiroshi Tokumaru
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
Hiroshi Tokumaru
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
Hiroshi Tokumaru
Recommended
ウェブアプリケーションセキュリティ超入門
ウェブアプリケーションセキュリティ超入門
Hiroshi Tokumaru
XSS再入門
XSS再入門
Hiroshi Tokumaru
Proxy War
Proxy War
zaki4649
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
kwatch
SQLインジェクション再考
SQLインジェクション再考
Hiroshi Tokumaru
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
Hiroshi Tokumaru
XXE、SSRF、安全でないデシリアライゼーション入門
XXE、SSRF、安全でないデシリアライゼーション入門
Hiroshi Tokumaru
徳丸本に載っていないWebアプリケーションセキュリティ
徳丸本に載っていないWebアプリケーションセキュリティ
Hiroshi Tokumaru
とある診断員とSQLインジェクション
とある診断員とSQLインジェクション
zaki4649
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
Hiroshi Tokumaru
徳丸本ができるまで
徳丸本ができるまで
Hiroshi Tokumaru
XSSフィルターを利用したXSS攻撃 by Masato Kinugawa
XSSフィルターを利用したXSS攻撃 by Masato Kinugawa
CODE BLUE
最近のやられアプリを試してみた
最近のやられアプリを試してみた
zaki4649
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
Hiroshi Tokumaru
PenTesterが知っている危ないAWS環境の共通点
PenTesterが知っている危ないAWS環境の共通点
zaki4649
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
abend_cve_9999_0001
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
Sen Ueno
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru
猫でもわかるかもしれない SQLインジェクション
猫でもわかるかもしれない SQLインジェクション
kinme modoki
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-
zaki4649
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
Hiroshi Tokumaru
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
130821 owasp zed attack proxyをぶん回せ
130821 owasp zed attack proxyをぶん回せ
Minoru Sakai
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
Hiroshi Tokumaru
フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!
zaki4649
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
Masato Kinugawa
「データベース実践入門」から学ぶリレーショナルモデル
「データベース実践入門」から学ぶリレーショナルモデル
Sota Sugiura
TechCrunchTokyo Hackathon 2015
TechCrunchTokyo Hackathon 2015
Sota Sugiura
More Related Content
What's hot
とある診断員とSQLインジェクション
とある診断員とSQLインジェクション
zaki4649
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
Hiroshi Tokumaru
徳丸本ができるまで
徳丸本ができるまで
Hiroshi Tokumaru
XSSフィルターを利用したXSS攻撃 by Masato Kinugawa
XSSフィルターを利用したXSS攻撃 by Masato Kinugawa
CODE BLUE
最近のやられアプリを試してみた
最近のやられアプリを試してみた
zaki4649
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
Hiroshi Tokumaru
PenTesterが知っている危ないAWS環境の共通点
PenTesterが知っている危ないAWS環境の共通点
zaki4649
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
abend_cve_9999_0001
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
Sen Ueno
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru
猫でもわかるかもしれない SQLインジェクション
猫でもわかるかもしれない SQLインジェクション
kinme modoki
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-
zaki4649
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
Hiroshi Tokumaru
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
130821 owasp zed attack proxyをぶん回せ
130821 owasp zed attack proxyをぶん回せ
Minoru Sakai
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
Hiroshi Tokumaru
フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!
zaki4649
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
Masato Kinugawa
What's hot
(20)
とある診断員とSQLインジェクション
とある診断員とSQLインジェクション
若手エンジニアのためのセキュリティ講座
若手エンジニアのためのセキュリティ講座
徳丸本ができるまで
徳丸本ができるまで
XSSフィルターを利用したXSS攻撃 by Masato Kinugawa
XSSフィルターを利用したXSS攻撃 by Masato Kinugawa
最近のやられアプリを試してみた
最近のやられアプリを試してみた
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
PenTesterが知っている危ないAWS環境の共通点
PenTesterが知っている危ないAWS環境の共通点
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
猫でもわかるかもしれない SQLインジェクション
猫でもわかるかもしれない SQLインジェクション
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Let's verify the vulnerability-脆弱性を検証してみよう!-
Let's verify the vulnerability-脆弱性を検証してみよう!-
ウェブセキュリティのありがちな誤解を解説する
ウェブセキュリティのありがちな誤解を解説する
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
130821 owasp zed attack proxyをぶん回せ
130821 owasp zed attack proxyをぶん回せ
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011
フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
More from Sota Sugiura
「データベース実践入門」から学ぶリレーショナルモデル
「データベース実践入門」から学ぶリレーショナルモデル
Sota Sugiura
TechCrunchTokyo Hackathon 2015
TechCrunchTokyo Hackathon 2015
Sota Sugiura
コミットメッセージの話
コミットメッセージの話
Sota Sugiura
HTTP2入門
HTTP2入門
Sota Sugiura
HTTP入門
HTTP入門
Sota Sugiura
各ブラウザでの均等割り付け比較
各ブラウザでの均等割り付け比較
Sota Sugiura
GitHubにおける開発フローについてのお話
GitHubにおける開発フローについてのお話
Sota Sugiura
Promiseでコールバック地獄から解放された話
Promiseでコールバック地獄から解放された話
Sota Sugiura
Web Audio API 入門
Web Audio API 入門
Sota Sugiura
More from Sota Sugiura
(9)
「データベース実践入門」から学ぶリレーショナルモデル
「データベース実践入門」から学ぶリレーショナルモデル
TechCrunchTokyo Hackathon 2015
TechCrunchTokyo Hackathon 2015
コミットメッセージの話
コミットメッセージの話
HTTP2入門
HTTP2入門
HTTP入門
HTTP入門
各ブラウザでの均等割り付け比較
各ブラウザでの均等割り付け比較
GitHubにおける開発フローについてのお話
GitHubにおける開発フローについてのお話
Promiseでコールバック地獄から解放された話
Promiseでコールバック地獄から解放された話
Web Audio API 入門
Web Audio API 入門
今さら聞けないXSS
1.
今さらきけないXSS 杉浦颯太 (sugiuras)
2.
XSSのお話します
3.
対象者 • XSSを知らない • 聞いたことくらいはあるけど詳しくはしらない •
XSS?エスケープしとけばいいんでしょ? • 脅威も概要も知ってるけどどう対策すればいいか想 像がつかない
4.
アジェンダ 1. 自己紹介 2. XSS
is 3. 攻撃者視点 4. 防御者視点 5. まとめ
5.
アジェンダ 1. 自己紹介 2. XSS
is 3. 攻撃者視点 4. 防御者視点 5. まとめ
6.
申し訳程度の自己紹介 • 杉浦 颯太(すぎうら
そうた) • 研修なう • 敬語できねぇ • PDCAとか難しい • スーツ息苦し(ry • Twitter / GitHub : @sota1235
7.
アジェンダ 1. 自己紹介 2. XSS
is 3. 攻撃者視点 4. 防御者視点 5. まとめ
8.
XSS、ご存じですか?
9.
XSS is.. • XSS
= Cross Site Scripting • Webページ上で任意のスクリプトを実行できてし まう脆弱性 • JavaScriptが流行り始めるとともに無視できなく なってきた厄介なやつ
10.
俺「え、別に問題なくね?」
11.
問題大有りなんです
12.
XSS is.. • Webページ上で任意のスクリプトを実行できてし まう脆弱性 →つまりJavaScriptでできることは何でもできる
13.
JSでできること • ページの書き換え • Cookieの読み出し •
Ajax
14.
JSでできること • ページの書き換え → ページ改竄による偽ページ •
Cookieの読み出し → ユーザ情報の盗難 • Ajax → 攻撃者へのデータ送信が可能
15.
JSでできないこと • PC上のリソースが脅かされる危険はない • サンドボックスによりPC上のリソースは守られ ている •
同時に開いてる他タブの情報が取られることもない • SOP(Same Origin Policy)によりブロックされる
16.
とはいえ • 脅威であることに変わりなし • 後述しますが、フロントで攻撃が完結してしまうこ ともあるため、決して油断できない脆弱性です
17.
XSS is Evil(
꒪⌓꒪) • JSの可能性 = 攻撃者の可能性 • XSS、ダメ、ゼッタイ • サービスの致命的なセキュリティホールとなる
18.
アジェンダ 1. 自己紹介 2. XSS
is 3. 攻撃者視点 4. 防御者視点 5. まとめ
19.
僕たちは守る側の人間
20.
とはいえ 攻撃手法を知らないと守れない
21.
サービスを守るために… • 敵の攻撃方法を知って堅牢なサービスを作り隊 • セキュアでイケてるwebサービス作り隊 •
攻撃側の手法や種類を学んでみましょう
22.
XSS三兄弟 • XSSは大きく分けて3種類存在する
23.
XSS三兄弟 • 反射型XSS(Reflected XSS) •
蓄積型XSS(Stored XSS) • DOM Based XSS
24.
反射型XSS(Reflected XSS) • ユーザーの入力値をサーバが動的に出力することに より発生する •
発生原因の大半はエスケープ忘れ • シングルクオートやダブルクオートでhtmlタグを破 壊し、スクリプトを混入する
25.
蓄積型XSS(Stored XSS) • ユーザーの入力値をDBに貯めこむことにより •
発生原因の大半はエスケープ忘れ • シングルクオートやダブルクオートでhtmlタグを破 壊し、スクリプトを混入する
26.
DOM Based XSS •
JSで動的にHTMLを操作することにより発生 • 最近、こいつが急増してる • これも原因はエスケープ忘れ • 実装によってはサーバ側のログが一切残らず非常に 気づきにくい
27.
攻撃者はありとあらゆる方法でXSSを試みます
28.
imgタグ <IMG SRC="javascript:alert('XSS');"> <IMG SRC=javascript:alert('XSS')> <IMG
SRC=JaVaScRiPt:alert('XSS')> <IMG SRC=javascript:alert("XSS")> <IMG SRC=`javascript:alert("RSnake says, 'XSS'")`> <IMG """><SCRIPT>alert("XSS")</SCRIPT>"> <IMG SRC=javascript:alert(String.fromCharCode(88,83,83))> <IMG SRC=javascript:alert( 'XSS')> <IMG SRC=javascrip� 116:alert('X 3S')> <IMG SRC=javascript:alert(&#x 27XSS')> <IMG SRC="jav ascript:alert('XSS');"> <IMG SRC="jav	ascript:alert('XSS');"> <IMG SRC="jav
ascript:alert('XSS');"> <IMG SRC="jav
ascript:alert('XSS');">
29.
Data URI Scheme •
<iframe src="data:text/ html,<script>alert('XSS')</script>"></iframe> • <object data= data:text/ html,<script>alert('XSS2')</script>"></object> • <iframe src='data:text/ html;base64,PHNjcmlwdD5hbGVydCgnWFNTJ yk8L3NjcmlwdD4='></iframe>
30.
他にもいっぱい • JavaScript Scheme •
CSS Expression ( IE7) • UTF-7 • XML • 詳しくはGoogle先生
31.
アジェンダ 1. 自己紹介 2. XSS
is 3. 攻撃者視点 4. 防御者視点 5. まとめ
32.
僕たちは守る側の人間 • どうすればXSSはなくなるのだろう?
33.
防御法 心がけ編
34.
心がけ編:エスケープ処理 • ユーザーの入力値による動的出力は必要最低限に留める • 出力する場合は必ずエスケープする •
PHPならhtmlspecialchars() • 最近のFWなら対策されてたりする • ちなみにLaravelのBladeは中括弧を3重にすることでエス ケープしてくれる • とにかくエスケープ!!!!!!!!!!!!
35.
心がけ編:DOM操作 • DOMの動的出力を行わない • URLのパラメータでHTMLタグ生成とかダメ •
特にdocument.hashは理由がない限り使わない • 必ずしもユーザは優良ではないことを念頭に置いて 開発しましょう
36.
防御法 Cookie
37.
Cookie編 • Cookieにhttp-only属性をつける • JSからCookieを読み込ませないようにする •
XSSによるCookie盗難の可能性はほぼ0になる • このヘッダを付けない理由がないのであればつけ るべき • Set-Cookie: HttpOnly;
38.
防御法 CSP
39.
CSP #とは • CSP
= Content Security Policy • このヘッダの着いたリソースにはいくつかの制限が 課される • HTTPのヘッダフィールドの一種
40.
CSP #とは • リソースの読み込み元を制限する •
デフォルトだとJSが制限されている • eval禁止 • インラインスクリプト禁止
41.
JS制限 • eval($(‘#text’).val()); → 禁止! •
<script>alert(‘XSS’);</script> → 禁止!
42.
CSP 動作例
43.
CSP 使い方 • 使い方はHTTPヘッダを追加するだけ •
Content-Security-Policy: $policy • ブラウザ、サーバどちらかが対応していない場合、 SOPが自動で適用される
44.
CSP 使用例 • 使用例 •
Content-Security-Policy: default-src ‘src’ • 読み込み元のリソースを配信先に設定 • eval禁止、インラインスクリプト禁止 • その他、細かくpolicyを設定することが可能
45.
CSPまとめ • CSPとはJSやリソースの読み込み元に制限をかける HTTPヘッダフィールド • 万が一XSSがあった時、攻撃者に大きな制限をか けることができる •
ブラウザ、サーバどちらかが対応していない場合、 SOPが自動で適用される • ほぼすべてのブラウザで対応している
46.
CSPまとめ • ほぼすべてのブラウザで対応している
47.
安定のIE
48.
諦めるしか無いのか…?
49.
そんなこともあろうかと
50.
防御法 X-XSS-Protection編
51.
XSSフィルター • IE8以降にはXSSフィルターという機能が存在する • 有害なスクリプトを判定し、無効化する機構 •
不自然なインラインスクリプト等実行しなくなる • HTTPヘッダでX-XSS-Protection属性に1を指 定することで有効化できる
52.
XSSフィルター • IE以外のブラウザでもXSS防止の機構は存在する • Chrome,
Safari →XSS Auditor • FireFox →NoScript(アドオン) • ブラウザにより仕様が異なることを念頭に対策しましょう
53.
アジェンダ 1. 自己紹介 2. XSS
is 3. 攻撃者視点 4. 防御者視点 5. まとめ
54.
まとめ XSS is •
XSSとは任意のJavaScriptが実行できる脆弱性 • JSで可能なこと全てを攻撃者に許してしまう • JSでできないことはできない • 攻撃手法は主に3種類 • 反射型XSS • 蓄積型XSS • DOM Based XSS
55.
まとめ 防御策 • HTMLエスケープ処理 •
CookieをJSで処理しない • CSPの活用 • ブラウザごとのXSSフィルターの活用
56.
余談 • XSSにとても有効なCSPですが、去年にCSP Lv.2 なるものの最終草案が公開されました •
かなりイケてる感じなのでぜひ一度チェックしてみ てください
57.
参考 • IPAテクニカルウォッチ「DOM Based
XSS」に関するレポート • https://www.ipa.go.jp/files/000024729.pdf • Slide Share : CSP Lv.2の話 • http://www.slideshare.net/yagihashoo/csp-lv2 • MDN : Content Security Policy • https://developer.mozilla.org/ja/docs/Security/CSP_ %28Content_Security_Policy%29
58.
参考 • 1分でわかる「X-ナントカ」HTTPレスポンスヘッダ • http://d.hatena.ne.jp/hasegawayosuke/comment/20110107 •
徳丸浩の日記 • http://blog.tokumaru.org/ • XSSに限らず様々な脆弱性の記事があがっています • キャッチアップしておくとPHPでの脆弱性感度は間違いなくあがります • OWASP Top 10 - 2013 • https://www.owasp.org/images/7/79/OWASP_Top_10_2013_JPN.pdf
59.
おまけ • XSS Game https://xss-game.appspot.com/ Googleが出してるXSSしてくれYO!ってページ。 ゲーム感覚で一通りの攻撃手法が学べるのでぜひ
60.
おまけ
61.
以上。
Download now