Enviar búsqueda
Cargar
Blojsom におけるクロスサイトスクリプティングの脆弱性
•
1 recomendación
•
1,115 vistas
J
JPCERT Coordination Center
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 28
Recomendados
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
JPCERT Coordination Center
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
Sen Ueno
クロスサイトリクエストフォージェリ(CSRF)とその対策
クロスサイトリクエストフォージェリ(CSRF)とその対策
JPCERT Coordination Center
第32回Websig会議「クラウドは○○を共有するサービス」
第32回Websig会議「クラウドは○○を共有するサービス」
Sen Ueno
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
JPCERT Coordination Center
RubyでDSL
RubyでDSL
Yukimitsu Izawa
なぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのか
Sen Ueno
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
Masahiro NAKAYAMA
Recomendados
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
JPCERT Coordination Center
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)
Sen Ueno
クロスサイトリクエストフォージェリ(CSRF)とその対策
クロスサイトリクエストフォージェリ(CSRF)とその対策
JPCERT Coordination Center
第32回Websig会議「クラウドは○○を共有するサービス」
第32回Websig会議「クラウドは○○を共有するサービス」
Sen Ueno
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
JPCERT Coordination Center
RubyでDSL
RubyでDSL
Yukimitsu Izawa
なぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのか
Sen Ueno
クラウドセキュリティ基礎 #seccamp
クラウドセキュリティ基礎 #seccamp
Masahiro NAKAYAMA
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
JPCERT Coordination Center
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
JPCERT Coordination Center
MySQL Connector/J における SQL インジェクションの脆弱性
MySQL Connector/J における SQL インジェクションの脆弱性
JPCERT Coordination Center
Advanced SQL Injection Attack & Defenses
Advanced SQL Injection Attack & Defenses
Tiago Mendo
Advanced sql injection
Advanced sql injection
badhanbd
Apache Axis2におけるXML署名検証不備
Apache Axis2におけるXML署名検証不備
JPCERT Coordination Center
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JPCERT Coordination Center
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
JPCERT Coordination Center
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JPCERT Coordination Center
OWASP ZAP(など)で挑む SECCON
OWASP ZAP(など)で挑む SECCON
Jun Matsumoto
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
JPCERT Coordination Center
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
JPCERT Coordination Center
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
JPCERT Coordination Center
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
JPCERT Coordination Center
It all starts with the ' (SQL injection from attacker's point of view)
It all starts with the ' (SQL injection from attacker's point of view)
Miroslav Stampar
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
JPCERT Coordination Center
脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくる
JPCERT Coordination Center
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
JPCERT Coordination Center
自分よりも技術力の高い会社に入社して感じたこと
自分よりも技術力の高い会社に入社して感じたこと
Suzuki Masayuki
Web applicationpenetrationtest その4
Web applicationpenetrationtest その4
Tetsuya Hasegawa
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Atsushi Kambara
Más contenido relacionado
Destacado
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
JPCERT Coordination Center
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
JPCERT Coordination Center
MySQL Connector/J における SQL インジェクションの脆弱性
MySQL Connector/J における SQL インジェクションの脆弱性
JPCERT Coordination Center
Advanced SQL Injection Attack & Defenses
Advanced SQL Injection Attack & Defenses
Tiago Mendo
Advanced sql injection
Advanced sql injection
badhanbd
Apache Axis2におけるXML署名検証不備
Apache Axis2におけるXML署名検証不備
JPCERT Coordination Center
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JPCERT Coordination Center
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
JPCERT Coordination Center
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JPCERT Coordination Center
OWASP ZAP(など)で挑む SECCON
OWASP ZAP(など)で挑む SECCON
Jun Matsumoto
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
JPCERT Coordination Center
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
JPCERT Coordination Center
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
JPCERT Coordination Center
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
JPCERT Coordination Center
It all starts with the ' (SQL injection from attacker's point of view)
It all starts with the ' (SQL injection from attacker's point of view)
Miroslav Stampar
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
JPCERT Coordination Center
脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくる
JPCERT Coordination Center
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
JPCERT Coordination Center
自分よりも技術力の高い会社に入社して感じたこと
自分よりも技術力の高い会社に入社して感じたこと
Suzuki Masayuki
Destacado
(20)
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
MySQL Connector/J における SQL インジェクションの脆弱性
MySQL Connector/J における SQL インジェクションの脆弱性
Advanced SQL Injection Attack & Defenses
Advanced SQL Injection Attack & Defenses
Advanced sql injection
Advanced sql injection
Apache Axis2におけるXML署名検証不備
Apache Axis2におけるXML署名検証不備
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
OWASP ZAP(など)で挑む SECCON
OWASP ZAP(など)で挑む SECCON
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
It all starts with the ' (SQL injection from attacker's point of view)
It all starts with the ' (SQL injection from attacker's point of view)
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくる
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
自分よりも技術力の高い会社に入社して感じたこと
自分よりも技術力の高い会社に入社して感じたこと
Similar a Blojsom におけるクロスサイトスクリプティングの脆弱性
Web applicationpenetrationtest その4
Web applicationpenetrationtest その4
Tetsuya Hasegawa
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Atsushi Kambara
ライブコーディングとデモで理解するWebセキュリティの基礎
ライブコーディングとデモで理解するWebセキュリティの基礎
Takahisa Kishiya
Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話
ToshiharuSakai
Angularreflex20141210
Angularreflex20141210
Shinichiro Takezaki
次世代の企業ITインフラを支えるエンジニアとは
次世代の企業ITインフラを支えるエンジニアとは
Trainocate Japan, Ltd.
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
bitbank, Inc. Tokyo, Japan
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
ichikaway
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
Browser andsecurity2015
Browser andsecurity2015
彰 村地
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
hiroya
HTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティ
彰 村地
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
JPCERT Coordination Center
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
Isao Takaesu
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
Backbone.js入門
Backbone.js入門
AdvancedTechNight
Web Intents入門
Web Intents入門
Shumpei Shiraishi
Essentials of container
Essentials of container
Toru Makabe
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
Takashi Watanabe
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
Hiroyuki Ohnaka
Similar a Blojsom におけるクロスサイトスクリプティングの脆弱性
(20)
Web applicationpenetrationtest その4
Web applicationpenetrationtest その4
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
ライブコーディングとデモで理解するWebセキュリティの基礎
ライブコーディングとデモで理解するWebセキュリティの基礎
Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話
Angularreflex20141210
Angularreflex20141210
次世代の企業ITインフラを支えるエンジニアとは
次世代の企業ITインフラを支えるエンジニアとは
TypeScript製フレームワーク「Nest」のご紹介
TypeScript製フレームワーク「Nest」のご紹介
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
脆弱性もバグ、だからテストしよう PHPカンファンレス2015
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Browser andsecurity2015
Browser andsecurity2015
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
webstart-maven-pugin + 無償で正統?なコード署名証明書を入手する方法
HTML5 Web アプリケーションのセキュリティ
HTML5 Web アプリケーションのセキュリティ
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Backbone.js入門
Backbone.js入門
Web Intents入門
Web Intents入門
Essentials of container
Essentials of container
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
Más de JPCERT Coordination Center
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
JPCERT Coordination Center
DLL読み込みの問題を読み解く
DLL読み込みの問題を読み解く
JPCERT Coordination Center
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
JPCERT Coordination Center
ソフトウェアセキュリティ保証成熟度モデル
ソフトウェアセキュリティ保証成熟度モデル
JPCERT Coordination Center
Android Secure Coding
Android Secure Coding
JPCERT Coordination Center
Apache Struts2 における任意の Java メソッド実行の脆弱性
Apache Struts2 における任意の Java メソッド実行の脆弱性
JPCERT Coordination Center
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
JPCERT Coordination Center
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
JPCERT Coordination Center
Más de JPCERT Coordination Center
(11)
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
DLL読み込みの問題を読み解く
DLL読み込みの問題を読み解く
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
ソフトウェアセキュリティ保証成熟度モデル
ソフトウェアセキュリティ保証成熟度モデル
Android Secure Coding
Android Secure Coding
Apache Struts2 における任意の Java メソッド実行の脆弱性
Apache Struts2 における任意の Java メソッド実行の脆弱性
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
Apache Sling におけるサービス運用妨害(無限ループ)の脆弱性
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第2回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
Blojsom におけるクロスサイトスクリプティングの脆弱性
1.
Copyright©2013 JPCERT/CC All
rights reserved. 「Javaアプリケーション脆弱性事例調査資料」について この資料は、Javaプログラマである皆様に、脆弱性を身 近な問題として感じてもらい、セキュアコーディングの 重要性を認識していただくことを目指して作成していま す。 「Javaセキュアコーディングスタンダード CERT/Oracle版」と合わせて、セキュアコーディングに 関する理解を深めるためにご利用ください。 JPCERTコーディネーションセンター セキュアコーディングプロジェクト secure-coding@jpcert.or.jp 1 Japan Computer Emergency Response Team Coordination Center 電子署名者 : Japan Computer Emergency Response Team Coordination Center DN : c=JP, st=Tokyo, l=Chiyoda-ku, email=office@jpcert.or.jp, o=Japan Computer Emergency Response Team Coordination Center, cn=Japan Computer Emergency Response Team Coordination Center 日付 : 2013.06.27 11:23:15 +09'00'
2.
Blojsom におけるクロスサイト スクリプティングの脆弱性 CVE-2006-4829 JVNDB-2006-001260 2
3.
Copyright©2013 JPCERT/CC All
rights reserved. Blojsomとは BlojsomはJavaで書かれたブログシステム AppleのMac OS X Server 10.4 TigerのWeblog Serverは blojsomがベースとなっている 3
4.
Copyright©2013 JPCERT/CC All
rights reserved. 脆弱性の概要 4 •Blojsom は入力された文字列の処理に不備があり、 クロスサイトスクリプティング攻撃が可能 •攻撃者の用意したリンクをクリックするだけでク ロスサイトスクリプティング攻撃が成立する •クロスサイトスクリプティングにより、アカウン ト乗っ取り等の被害が発生する
5.
Copyright©2013 JPCERT/CC All
rights reserved. クロスサイトスクリプティングとは クロスサイトスクリプティングとは、ユーザの 入力値を元にHTMLやURLなどを動的に生成し ているWebサイトにおいて、攻撃者によって ユーザのブラウザに表示されるコンテンツに任 意のHTMLやJavaScriptを埋め込む攻撃。 クロスサイトスクリプティングにより下記のよ うな被害が発生する。 —不正なサイトへの誘導 —Cookieの搾取によるセッションの乗っ取り —不正プログラムの埋め込み・実行 —機密情報の漏えい(HTTPSページの情報搾取や HTMLフォームの偽装等) 5
6.
Copyright©2013 JPCERT/CC All
rights reserved. クロスサイトスクリプティング攻撃例 6 ①ユーザーを攻撃者のWebサイトに誘導 ②攻撃者のWebサイトにアクセス ③攻撃コードを含むレスポンス ④攻撃コードを 含むリクエスト① 攻撃者はユーザーを攻撃者のWebサイトに誘導 する。 ② ユーザーは攻撃者のサイトにアクセスする。 ③ 攻撃者のサイトから、攻撃対象サイトに対する 攻撃コードを含むレスポンスが返される。 ④ ユーザーは攻撃対象サイトに対して攻撃コード を含むリクエストを送信する。 ⑤ ユーザーは攻撃コードを含むレスポンスを受信 し、攻撃対象サイトのページ上で攻撃コードが 実行される。 攻撃対象サイト 攻撃の流れ ⑤攻撃コードを 含むレスポンス 攻撃実行!! 攻撃者 ユーザ
7.
Copyright©2013 JPCERT/CC All
rights reserved. クロスサイトスクリプティング攻撃例 7 ⑥セッションIDが奪われる ⑥ 攻撃コードが実行され、セッションIDが奪われる。 ⑦ 攻撃者は奪ったセッションIDを利用して、ユーザーになりすまして攻撃対 象サイトにアクセスする。 ⑧ 攻撃対象サイト上のユーザー情報を奪うことが可能となる。 攻撃対象サイト 攻撃の流れ 攻撃実行!! ⑦ユーザーになりすまし ⑧機密情報の漏えい 攻撃者 ユーザ
8.
Copyright©2013 JPCERT/CC All
rights reserved. Blojsom の処理内容 8 ブログに新しい書き込みを実施した場合の処理フロー ① クライアントのブラウザからリクエストが送信され、アプリケーションが受 信する。 ② リクエストからパラメータを取り出し、処理(ブログの書き込み)を実施。 ③ アプリケーションは書き込み結果とともに、書き込み内容をクライアントに レスポンスとして送信し、クライアントのブラウザに表示される ① ②③ 8
9.
Copyright©2013 JPCERT/CC All
rights reserved. Blojsomの処理: ①クライアントからリクエストを受信する 9 POST /blojsom/blog/default/ HTTP/1.1 Host: 192.168.xxx.xxx Content-Length: 370 action=add-blog-entry&flavor=….&rss-enclosure-url=test&…&submit=Add+blog+entry <form action=‘/blojsom/blog/default/’ method=‘POST’> : <input type=‘text’ name=‘rss-enclosure-url’ value=‘test’> : <input type=‘submit’ name=‘post’ value=‘Add blog entry’> </form> クライアントから送信されるリクエストは下記のようになる。 ※ここではパラメータ “rss-enclosure-url” に注目する。 HTTPリクエスト 上記HTTPリクエストを送信するためのHTML ここではパラメータ rss-enclosure-url の値は test
10.
Copyright©2013 JPCERT/CC All
rights reserved. ブログ書き込み画面 パラメータ rss-enclosure-url の入力フォーム 10 Blojsomの処理: ①クライアントからリクエストを受信する
11.
Copyright©2013 JPCERT/CC All
rights reserved. Blojsomの処理: ②リクエストの処理とブログへの書き込み処理 11 public class RSSEnclosurePlugin implements BlojsomPlugin, BlojsomListener { : public static final String RSS_ENCLOSURE_URL = "rss-enclosure-url"; : public void processEvent(BlojsomEvent event) { : ProcessBlogEntryEvent processBlogEntryEvent = (ProcessBlogEntryEvent) event; : //リクエストからパラメータrss-enclosure-urlの値を取り出す String rssEnclosureURL = BlojsomUtils.getRequestValue(RSS_ENCLOSURE_URL, processBlogEntryEvent.getHttpServletRequest()); : (ブログへの書き込み処理) : RSSEnclosurePlugin.java リクエストからパラメータ rss-enclosure-url の値を変数 rssEnclosureURL に格納 し、ブログへの書き込み処理を実施する。
12.
Copyright©2013 JPCERT/CC All
rights reserved. Blojsomの処理: ③処理結果をクライアントへ返す 12 public class RSSEnclosurePlugin implements BlojsomPlugin, BlojsomListener { : public void processEvent(BlojsomEvent event) { : //クライアントに値を返す processBlogEntryEvent.getContext().put(RSS_ENCLOSURE_URL_ITEM, rssEnclosureURL); RSSEnclosurePlugin.java 書き込み処理を実施後、変数rssEnclosureURLの値をレスポンスとしてクライ アントに返す。
13.
Copyright©2013 JPCERT/CC All
rights reserved.13 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Pragma: no-cache Content-Type: text/html;charset=UTF-8 Date: Fri, 05 Oct 2012 07:29:17 GMT Content-Length: 26881 <html> <head> : <tr> <td>URL to enclosure</td> <td><input type="text" name="rss-enclosure-url" value="test" size="60" /></td> </tr> : HTTPレスポンス アプリケーションからクライアントへ送信されるHTTPレスポンスは下記のよう な内容になる。 Blojsomの処理: ③処理結果をクライアントへ返す
14.
Copyright©2013 JPCERT/CC All
rights reserved.14 処理完了画面 書き込み完了の結果を表示 POSTした内容がそのまま表 示される。 Blojsomの処理: ③処理結果をクライアントへ返す
15.
Copyright©2013 JPCERT/CC All
rights reserved. 攻撃コード 15 POST /blojsom/blog/default/ HTTP/1.1 Host: 192.168.xxx.xxx Content-Length: 370 action=add-blog-entry&flavor=….& rss-enclosure-url="><script>alert(123)</script>&…&submit=Add+blog+entry 攻撃コードのHTTPリクエスト ■攻撃コードのポイント • パラメータ rss-enclosure-url にスクリプトタグを含む値を送信する。
16.
Copyright©2013 JPCERT/CC All
rights reserved. 攻撃コード 16 <form action=‘/blojsom/blog/default/’ method=‘POST’> : <input type=‘hidden’ name=‘rss-enclosure-url’ value=‘"><script>alert(123)</script>’> : <input type=‘submit’ name=‘post’ value=‘Add blog entry’> </form> 攻撃コードのHTTPリクエストを送信するためのHTML 被害者にこのフォームのリクエストを送信させることでクロスサイトスクリ プティング攻撃が成立する。 Click me!! 魅惑のコンテンツ
17.
Copyright©2013 JPCERT/CC All
rights reserved. 攻撃コードが実行された際の処理 17 ブログに新しい書き込みを実施した場合の処理フロー ① クライアントのブラウザからリクエストが送信され、アプリケーションが受 信する。 ② リクエストからパラメータを取り出し、処理(ブログの書き込み)を実施。 ③ アプリケーションは書き込み結果とともに、書き込み内容をクライアントに レスポンスとして送信し、クライアントのブラウザに表示される 攻撃が実施された際の処理フローは正常な処理とまったく変わらない。 ③のアプリケーションから送信されるレスポンス内容に注目する。
18.
Copyright©2013 JPCERT/CC All
rights reserved. <td>URL to enclosure</td> <td><input type="text" name="rss-enclosure-url" value=“test” size="60" /></td> </tr> 攻撃コードが実行された際の処理 18 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 : <html> <head> : <tr> <td>URL to enclosure</td> <td><input type="text" name="rss-enclosure-url" value=""><script>alert(123)</script>” size="60" /></td> </tr> アプリケーションからクライアントに返されるHTTPレスポンス HTTPレスポンス 通常の処理の際のレスポンス 挿入された文字列により、input タグが閉じられ script タグが 挿入された形になる。そのため、ブラウザは script タグ内の Javascript を実行してしまう。
19.
Copyright©2013 JPCERT/CC All
rights reserved. 問題点 今回のアプリケーションにおける具体的な問題点 HTMLへ出力する際に、Javascriptとして解釈される文字列 を無害化していないために脆弱性が発生している。 以下のコーティングガイドに違反している 「 IDS00-J. 信頼境界を越えて渡される信頼できない データは無害化する」 上記の問題点に対してどうすべきだったか Javascriptとして解釈される文字列を無害化してから HTMLに出力すべきであった。 19
20.
Copyright©2013 JPCERT/CC All
rights reserved. ブログに新しい書き込みを実施した場合の処理フロー ① クライアントのブラウザからリクエストが送信され、アプリケーションが受 信する。 ② リクエストからパラメータを取り出し、処理(ブログの書き込み)を実施。 ③ アプリケーションは書き込み結果とともに、書き込み内容をクライアントに レスポンスとして送信し、クライアントのブラウザに表示される 修正版コード 20 この処理のコードに 修正が入っている 本脆弱性はバージョン2.32で修正されている
21.
Copyright©2013 JPCERT/CC All
rights reserved. public class RSSEnclosurePlugin implements BlojsomPlugin, BlojsomListener { : public void processEvent(BlojsomEvent event) { : processBlogEntryEvent.getContext().put(RSS_ENCLOSURE_URL_ITEM, BlojsomUtils.escapeBrackets(rssEnclosureURL)); 修正版コード 21 public class RSSEnclosurePlugin implements BlojsomPlugin, BlojsomListener { : public void processEvent(BlojsomEvent event) { : processBlogEntryEvent.getContext().put(RSS_ENCLOSURE_URL_ITEM, rssEnclosureURL); RSSEnclosurePlugin.java(修正前) RSSEnclosurePlugin.java(修正後) クライアントに値を返す際 BlojsomUtilsクラスの escapeBracketsメソッドを 呼び出している。
22.
Copyright©2013 JPCERT/CC All
rights reserved. 修正版コード 22 public static String escapeBrackets(String input) { if (input == null) { return null; } String unescaped = replace(input, "<", "<"); unescaped = replace(unescaped, ">", ">"); return unescaped; } 無害化処理として、引数inputの値に含まれる値をエスケープ処理している。 BlojsomUtilsクラスのescapeBracketsメソッド エスケープ対象文字列 エスケープ処理後文字列 < < > >
23.
Copyright©2013 JPCERT/CC All
rights reserved. 修正版コード 23 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 : <html> <head> : <tr> <td>URL to enclosure</td> <td><input type="text" name="rss-enclosure-url" value=""><script>alert(123)</script> size="60" /></td> </tr> HTTPレスポンス 修正版コードに対して先ほどの攻撃コードを実行すると、下記のようなHTTP レスポンスになり、スクリプトが実行されなくなる。 エスケープ処理により スクリプトが実行されなくなる。
24.
Copyright©2013 JPCERT/CC All
rights reserved. 実はこの修正では不十分!! クロスサイトスクリプティングに対する無害化を行う際 に、前述の処理だけでは完全に無害化できないケースが 存在する。 具体的にはHTMLのタグ内への文字列の出力。 パラメータrss-enclosure-urlに 「“ onfocus=”javascript:alert(1)」という値を挿入するこ とで、入力フォームにマウスカーソルを持っていくと Javascriptが動作する。 24 <td>URL to enclosure</td> <td> <input type=“text” name=“rss-enclosure-url” value=“" onfocus="javascript:alert(1)” size="60" /></td> </tr> パラメータrss-enclosure-urlに「 " onfocus="javascript:alert(1) 」を挿入した際のHTTPレスポンス BlojsomUtilsクラスのescapeBracketsメソッドによる エスケープ処理をバイパスできてしまう。
25.
Copyright©2013 JPCERT/CC All
rights reserved. さらに修正 次の5種類の文字をHTMLエンコードする さらにユーザからの入力値をタグの属性値に埋め込む場合は、値全 体を「“(ダブルクオート)」文字で括る。 それにより、「a“ onmouseover=”alert(1);」という文字列を挿入さ せられた場合でも、次のようなHTMLが生成されるためJavaScript は実行されない。 25 エスケープ対象文字列 エスケープ処理後文字列 < < > > & & “ " ‘ ' <input type="text" value="a" onmouseover="alert(1);">
26.
Copyright©2013 JPCERT/CC All
rights reserved. さらに修正 26 public static String escapeBrackets(String input) { if (input == null) { return null; } String unescaped = replace(input, "<", "<"); unescaped = replace(unescaped, ">", ">"); unescaped = replace(unescaped, " & ", "&"); unescaped = replace(unescaped, " ¥" ", """); unescaped = replace(unescaped, " ’ ", "'"); return unescaped; } BlojsomUtilsクラスのescapeBracketsメソッド(追加修正版) 前述を踏まえてescapeBracketsメソッドを修正すると下記のようになる。 追加されたコード。 3つの特殊記号に対する エスケープ処理を追記する。
27.
Copyright©2013 JPCERT/CC All
rights reserved. まとめ 27 ■この脆弱性から学べるプログラミングの注意点 •アプリケーションの外部にデータを出力する場合、出力 先でデータがどのように使用されるかを考慮すべきだっ た ■上記への対策 • データの出力先がWebブラウザの場合、想定外の個所に HTML のメタ文字が含まれている場合に備えてHTMLエン コーディングを施す 【参考】 OWASP XSS Filter Evasion Cheat Sheet https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet XSS (Cross Site Scripting) Prevention Cheat Sheet https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
28.
Copyright©2013 JPCERT/CC All
rights reserved. 著作権・引用や二次利用について 本資料の著作権はJPCERT/CCに帰属します。 本資料あるいはその一部を引用・転載・再配布する際は、引用元名、資料名および URL の明示をお 願いします。 記載例 引用元:一般社団法人JPCERTコーディネーションセンター Java アプリケーション脆弱性事例解説資料 Blojsom におけるクロスサイトスクリプティングの脆弱性 https://www.jpcert.or.jp/research/materials-java-casestudies/No.3_Blojsom.pdf 本資料を引用・転載・再配布をする際は、引用先文書、時期、内容等の情報を、JPCERT コーディ ネーションセンター広報(office@jpcert.or.jp)までメールにてお知らせください。なお、この連絡に より取得した個人情報は、別途定めるJPCERT コーディネーションセンターの「プライバシーポリ シー」に則って取り扱います。 本資料の利用方法等に関するお問い合わせ JPCERTコーディネーションセンター 広報担当 E-mail:office@jpcert.or.jp 28 本資料の技術的な内容に関するお問い合わせ JPCERTコーディネーションセンター セキュアコーディング担当 E-mail:secure-coding@jpcert.or.jp