Nov 14 2013 Yosuke HASEGAWA #owaspjapan. OWASP Japan Local Chapter Meeting #8 #owaspjapan 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー 技術顧問  Microsoft.

Slides:



Advertisements
Similar presentations
HTML5時代の Webセキュリティ Jul Yosuke HASEGAWA. NetAgent security-mikan techtalk #5 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー.
Advertisements

セッション管理 ソフトウェア特論 第 8 回. ここでの内容 セッション管理の基本を知る。 HttpSession の使い方を知る。
Jun Yosuke HASEGAWA. NetAgent OWASP Japan Local Chapter Meeting #6 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー.
1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 1 ( 超入門編 ) Perl for Win32 利用による Web アプリケーション開 発 ( 超入門編 ) 日本ヒューレット・パッカード ( 株 ) 石堂 正樹.
JavaScript における DOM 操作 XML 読み込み Ajax( 動的 HTML 編集 ) 情報システム工学科ラシキアゼミ 3年 H 107072 田中直樹.
オリジンのはなし. NetAgent Shibuya.XSS Feb What is "Origin" ?  オリジン  Same-Origin Policy  クロスオリジンなんとか…  RFC6454 "The Web.
Copyright © Ariel Networks, Inc. AJAX 勉強会 アリエル・ネットワーク株式会社.
パスシーケンスに基づく Drive-by- Download 攻撃の分類 東海大学 桑原和也 菊池浩明 中央大学 安藤槙悟 趙晋輝 日立製作所 藤原将志 寺田真敏.
情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
© 2005 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます prototype.js と Perl で Ajax 株式会社はてな 伊藤 直也
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
IIS 4.0で開発をするコツ Webアプリケーション構築.
サイバーセキュリティ演習 ― Webセキュリティ基礎&実践―
The Perl Conference Japan ’98 朝日奈アンテナによる コンテンツ情報の取得と利用
Web::Security beyond HTML5
技術トピックス 2014/10.
サイバーセキュリティ演習 ― Webセキュリティ基礎&実践―
めんどうくさくない Bugハンティング Jul Yosuke HASEGAWA.
Webアプリケーションの 通信メカニズム WEBアプリ研究プロジェクト 第2回.
JPAを利用した RESTful Webサービスの開発
富士ソフト株式会社 IT事業本部 テクニカルC&C部 小川直人
受動的攻撃について Eiji James Yoshida penetration technique research site
第2章 ネットサービスとその仕組み(前編) [近代科学社刊]
<TITLE OF PRESENTATION>
オペレーティングシステムⅡ 第5回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/11/6.
Hot Pepper for iPod touch
Servlet J2EE I 第8回 /
Servlet入門(2) 入力フォームをつかったWebアプリ
XSSで使えるかもしれないJavaScriptテクニック
ネットワーク構成法 スケール 第6回 11月19日.
JavaServlet&JSP入門 01K0018 中村太一.
ネットワークコミュニケーション よく使われるアプリケーション DNS 7/5/07.
第4回 個人の動画配信補足のためのWeb構築
Webサイト運営 09fi118 橋倉伶奈 09fi131 本間昂 09fi137 三上早紀.
OpenID 勉強会 (OpenID Authentication1.1)
Vulnerability of Cross-Site Scripting
第1回 JavaScriptゼミ ・ scriptエレメント ・ 記述における諸注意 ・ 古いブラウザへの対応方法
オペレーティングシステムⅡ 第3回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/16.
Bottle/Pythonによる Webアプリ入門
タグライブラリとJSP J2EE I 第10回 /
セッション管理 J2EE I 第9回 /
HTTPプロトコルとJSP (1) データベース論 第3回.
Curlの仕組み.
タグライブラリとJSP J2EE II 第2回 2004年10月7日 (木).
押さえておきたいIE8の セキュリティ新機能
HTTPプロトコル J2EE I 第7回 /
ID一元管理を実現する - OpenIDの紹介 (OpenID Authentication1.1)
Servlet入門(2) 入力フォームをつかったWebアプリ
データベース設計 第9回 Webインタフェースの作成(1)
Javaによる Webアプリケーション入門 第9回
第8章 Web技術とセキュリティ   岡本 好未.
卒業論文発表 「Web アクセスに伴う脅威の特徴分析」
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
MVP for VB が語る C# 入門 初音 玲.
MVP for VB が語る C# 入門 初音 玲.
Javaによる Webアプリケーション入門 第6回
第7回JavaScriptゼミ セクション4-5 発表者 直江 宗紀.
制作技術ー3 双方向通信 : CGIシステムと環境変数
Webセキュリティ 情報工学専攻 1年 赤木里騎 P226~241.
日本郵便 「Web-EDI」利用ガイド (JP EDIシステム)
ご提案書 観光施設向けWi-Fiサービス 2015年03月25日 アイビーソリューション株式会社.
Twitterクライアントに学ぶASP.NETアプリ
サイバーセキュリティ演習 ― Webセキュリティ基礎&実践―
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
HTTPプロトコルの詳細 M1 峯 肇史.
Presentation transcript:

Nov Yosuke HASEGAWA #owaspjapan

OWASP Japan Local Chapter Meeting #8 #owaspjapan 自己紹介 はせがわようすけ  ネットエージェント株式会社  株式会社セキュアスカイ・テクノロジー 技術顧問  Microsoft MVP for Consumer Security Oct 

お知らせ announcement

OWASP Japan Local Chapter Meeting #8 #owaspjapan HTML5 調査報告 from JPCERT/CC

オープンリダイレクト Open redirect

OWASP Japan Local Chapter Meeting #8 #owaspjapan Open redirect オープンリダイレクト  本来はWebサイト内でのリダイレクト機能  攻撃者の指定した任意のサイトへジャンプで きてしまう  フィッシングやSEOポイゾニングに使用され る  サイト自体に被害を与えるわけではない  サイトの信頼は損ねる

OWASP Japan Local Chapter Meeting #8 #owaspjapan Open redirect オープンリダイレクト  実在した例 site: adult

OWASP Japan Local Chapter Meeting #8 #owaspjapan Open redirect オープンリダイレクト  リダイレクトの方法  HTTP応答として301または302を返す  JavaScriptによるlocationオブジェクトへ の代入 

OWASP Japan Local Chapter Meeting #8 #owaspjapan Redirect with 301 or 302  脆弱な例  オープンリダイレクトだけでなくHTTPヘッ ダインジェクションもある。 #!/usr/bin/perl use URI::Escape; my $url = uri_unescape( $ENV{QUERY_STRING} || '/' ); print "Status: 302 Found\n"; print "Location: $url\n\n"; HTTP/ Found Date: Tue, 28 Feb :34:56 GMT Location:

OWASP Japan Local Chapter Meeting #8 #owaspjapan location with JavaScript  JavaScriptによるリダイレクト  JavaScriptコード増に伴い増加  オープンリダイレクトだけでなくXSSにも // var url = decodeURIComponent( location.hash.substring(1) ); location.href = url;

OWASP Japan Local Chapter Meeting #8 #owaspjapan  IE6,7の は癖がある  「;」より後ろのURLが転送先に使用される  「;」をエスケープしても防げない  によるリダイレクトの動 的生成は避けたほうがよい

OWASP Japan Local Chapter Meeting #8 #owaspjapan オープンリダイレクトを防ぐために  転送先URLの確認…実は難しいよね   //example.com/    /\example.com/  その他にもいろいろ if( url.match( /^\/[^\/]/ ) ){ location.href = url; } // bad code

OWASP Japan Local Chapter Meeting #8 #owaspjapan オープンリダイレクトを防ぐために  HTTPレスポンスヘッダの改行コード  ブラウザによっては\r、\nどちらかだけで も改行とみなされる X-header: foo(0x0D 0x0A)Location: X-header: foo(0x0A)Location: X-header: foo(0x0D)Location:

OWASP Japan Local Chapter Meeting #8 #owaspjapan オープンリダイレクトを防ぐために  根本的対策  転送先URLを事前にリストとして保持 // JavaScript によるリダイレクト var pages = { foo:'/foo', bar:'/bar', baz:'/baz' }; var url = pages[ location.hash.substring(1) ] || '/'; location.href = url; #!/usr/bin/perl use URI::Escape; my $index = uri_unescape( $ENV{QUERY_STRING} || '' ); my $pages = { foo=>'/foo', bar=>'/bar', baz=>'/baz' }; my $url = $pages->{$index} || '/'; print "Status: 302 Found\n"; print "Location: $url\n\n";

CSRF

OWASP Japan Local Chapter Meeting #8 #owaspjapan CSRF  XHR Lv.2により攻撃しやすくなった  攻撃対象 : ファイルのアップロードフォーム

OWASP Japan Local Chapter Meeting #8 #owaspjapan CSRF  従来の攻撃手法  罠ページではformを自動でsubmitする  これではファイルの中身は送信できない <form method="POST" action=" enctype="multipart/form-data">

OWASP Japan Local Chapter Meeting #8 #owaspjapan CSRF  XHR Lv.2によるCSRF攻撃 var xhr = new XMLHttpRequest(); var boundary = '----boundary'; var file="abcd"; // 送信するファイルの内容 var request; xhr.open( 'POST', ' 'true' ); xhr.setRequestHeader( 'Content-Type', 'multipart/form-data; boundary=' + boundary ); xhr.withCredentials = true; // Cookie を付与 xhr.onreadystatechange = function(){}; request = '--' + boundary + '\r\n' + 'Content-Disposition: form-data; name="file"; ' + ' filename="filename.txt"\r\n' + 'Content-Type: application/octet-stream\r\n\r\n' + file + '\r\n' + '--' + boundary + '--'; xhr.send( request );

OWASP Japan Local Chapter Meeting #8 #owaspjapan CSRF  XHR Lv.2によるCSRF攻撃  XHRではクロスオリジンでリクエストを発行 可能(サーバ側が非対応でも送信は可能)  Content-Typeおよび送信内容をJavaScript で組み立てて発行(バイナリも可)  従来不可能だったファイルのアップロードの CSRFが攻略可能になった

OWASP Japan Local Chapter Meeting #8 #owaspjapan CSRF  対策  従来同様、副作用を持つ全ての箇所にトーク ンを要求する <input type="hidden" name="token" value="2ACE730295E23F2C">

HTM5時代のCSRF対策

OWASP Japan Local Chapter Meeting #8 #owaspjapan HTML5時代のCSRF対策  XMLHttpRequestを明示するリクエスト ヘッダを付与(これだけ!!) xhr = new XMLHttpRequest(); xhr.open( "POST", "/inquiry", true ); xhr.setRequestHeader( "Content-Type", "..." ); xhr.setRequestHeader( "X-Requested-With","XMLHttpRequest"); xhr.send( params ); POST HTTP/1.1 Host: example.jp UserAgent: Mozilla/5.0 X-Requested-With: XMLHttpRequest Content-Type: application/x-www-form-urlencoded

OWASP Japan Local Chapter Meeting #8 #owaspjapan HTML5時代のCSRF対策  罠サイトからの によるPOSTで はX-Requested-Withリクエストヘッダ は付与されない POST HTTP/1.1 Host: example.jp UserAgent: Mozilla/5.0 Referer: Content-Type: application/x-www-form-urlencoded <form method="POST" action="

OWASP Japan Local Chapter Meeting #8 #owaspjapan HTML5時代のCSRF対策  罠サイトからのXHRによるPOSTでは罠サ イトを指すOriginヘッダを持つPreflightリ クエストが発行される OPTIONS /inquiry HTTP/1.1 Host: example.jp UserAgent: Mozilla/5.0 Origin: Access-Control-Request-Method: POST Access-Control-Request-Headers: X-Requested-With xhr = new XMLHttpRequest(); xhr.open( "POST", " true ); xhr.setRequestHeader( "Content-Type", "..." ); xhr.setRequestHeader( "X-Requested-With","XMLHttpRequest"); xhr.send( params );

OWASP Japan Local Chapter Meeting #8 #owaspjapan HTML5時代のCSRF対策  サーバ側でX-Requested-Withヘッダと Originヘッダを確認することでCSRF対策 が可能  セッションの保持が不要  クロスドメインPOSTでのCSRF対策も可能  JavaScript必須  と違いページ遷移しない  DNS rebinding対策必須

まとめ Conclusion

OWASP Japan Local Chapter Meeting #8 #owaspjapan まとめ  オープンリダイレクト  JSによるオープンリダイレクトが増加傾向  転送先URLを事前に固定リストで保持  CSRF  JSによってファイルアップロードが可能  XHRではセッションなしにCSRF対策可能

質問タイム Question ?

OWASP Japan Local Chapter Meeting #8 #owaspjapan Question? 質問 @hasegawayosuke