SQL インジェクションの脆弱性

Similar documents
WEBシステムのセキュリティ技術

講義内容 AppGoat の説明 起動手順 学習の進め方 利用シーン紹介 脆弱性学習 ( 演習あり ) SQLインジェクションの脆弱性 クロスサイト スクリプティングの脆弱性 アンケート記入 2

1. SQL インジェクションの問題と脅威 2

安全な Web サイトの作り方 7 版 と Android アプリの脆弱性対策 独立行政法人情報処理推進機構 (IPA) 技術本部セキュリティセンター Copyright 2015 独立行政法人情報処理推進機構

[投影版]見つけられやすい脆弱性とウェブフレームワークに求められるセキュリティ対策_


安全なウェブサイトの作り方 7 版 の内容と資料活用例 2

9 WEB監視

SOC Report

はじめに (1) フィッシング詐欺 ( フィッシング攻撃 ) とは フィッシング詐欺とは インターネットバンキング ショッピングサイト等の利用者のアカウント情報 (ID パスワード等 ) や クレジットカードの情報等を騙し取る攻撃です 典型的な手口としては 攻撃者が本物のウェブサイトと似た偽のウェブ

JavaScript 演習 2 1

◎phpapi.indd

C:\Apache Software Foundation\Apache2.2\htdocs\sample\login.html サンプルプログラム passworddisc.php <head><title> ログイン </title></head> $user=$_post['user']; $

コンテンツ作成基本編

■デザイン

5.1. ホームページ登録 ホームページ URL を登録します ホームページ URL は基本契約で 1 個 (100MB) まで無料 2 個目以降は有料オプションサービス ( 月額 300 円 / 個 ) で追加登録が可能です (1) 左メニューの HP アカウント登録 リンクをクリックします (1

クイックマニュアル(利用者編)

ファイルのアップロード. 上メニューから [ アップロード ] を選択します. [ アップロード ] 画面に移行しますので, 以下の手順で操作を行います アップロードするファイルを選択し, 指定場所へ [ ドラッグ & ドロップ ] します ドラッグ & ドロップ ファイルがリストアップされたことを

エントロペイ操作マニュアル

2.2 Reflected XSS 攻撃攻撃者の用意した悪意のあるリンクとターゲットサーバが同じホストである場合の Reflected XSS 攻撃を, 本稿では Reflected XSS 攻撃と呼ぶ. 例えば, サーバ A の target.php に Reflected XSS 脆弱性があった

ホームページにパスワード認証を設定します 会員限定のページなどに利用できます 設定の手順 を設定するには 以下の手順で行います ユーザ登録 を設定したページにアクセスするためのユーザを登録します の設定 を設定するページ アクセスを許可するユーザを選択し 設定します 設定完了 を設定したページにアク

Delphi/400開発ノウハウお教えします 情報を守ろう!安全性を高めたWebシステムの構築

3-1 SPIRIT Gmail を使う メールアドレスの仕組み 自分のメールアドレスを確かめる V-Campus では V-Campus ID を利用したメールアドレスが 一人ひとりに用意されています メールアドレスとは 電子メールの利用者を識別するための宛名にあたるものです V-Campus で

HDC-EDI Manager Ver レベルアップ詳細情報 < 製品一覧 > 製品名バージョン HDC-EDI Manager < 対応 JavaVM> Java 2 Software Development Kit, Standard Edition 1.4 Java 2

電子申請サービス

目次 5. よくある質問とその答え 会員登録関連 質問 会員登録をしましたが 認証 E メールが届きません 質問 退会したいのですが ログイン関連 質問 正しいメールアドレスやパスワードを入力しても

管理サイト操作マニュアル Version.1.1. デジアナコミュニケーションズ株式会社

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

本書は 以下の URL からダウンロードできます 安全なウェブサイトの作り方

DBMSリポジトリへの移行マニュアル

掲示板ガイド1

ロイロノートスクールクラウド版表 クラウド サービス利 弊社が 意しているクラウドサービスへ接続し利 するシンプルなプランです サービスだけで利 することができます プラン 保存可能な容量 / ユーザー 額の場合 / ユーザー 年額の場合 / ユーザー 共 タブレット向け 1 0.8GB 40 円

Microsoft Word - Amazon Pay オペレーションマニュアル.docx

PowerPoint プレゼンテーション

Active Directory フェデレーションサービスとの認証連携

PowerPoint プレゼンテーション

Microsoft Word MT操作マニュアル(ユーザ編).doc

●コンテンツ「掲示板」

1 フリーページを表示する 1-1 フリーページのカテゴリを作成します フリーページのカテゴリの情報を入力します 1 複数のフリーページを記事のジャンルや種類で分け その見出しを入力します お店ページの左サイドバーに表示します 2 消費者が 検索エンジンで検索するであろう 記事の特長や内容をあらわす

FAX配信サービス 利用マニュアル

— intra-martで運用する場合のセキュリティの考え方    

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

Ver1.10 セコムあんしんログインサービス利用者マニュアル ID パスワード認証 +ワンタイムパスワード認証 (Mac OS X) 2015 年 1 月 26 日 セコムトラストシステムズ株式会社 Copyright SECOM Trust Systems CO.,LTD. All Rights

目次 1. Web 改ざん検知概要 (1)Web 改ざん検知機能 P2 (2) サービスの提供対象および範囲 P2 2. Web 改ざん検知機能 (1) 解析について P2 (2) ホーム画面について P3 (3) 解析履歴 P3 (4) レポート作成 P4 (5) 解析内容の設定 P4 a. 基本

モバイルカスタマイズページ マニュアル 楽天トラベル株式会社モバイル事業部 2007 年 5 月 15 日 1

目次 3 14P Wordpressテンプレートの設定方法 15P 17P livedoorテンプレートの設定方法 18P 21P FC2テンプレートの設定方法

クライアント証明書導入マニュアル

第 7 回の内容 動的な Web サイト フォーム Web システムの構成

目次 新規ユーザー登録... 3 初期設定... 6 (1) 特定商取引法に基づくページのURLを設定する... 7 (2) コンバージョン測定タグを設定する... 7 サイトを作成してみよう

Si 知識情報処理

改版履歴 版数 日付 内容 担当 V /2/25 初版発行 STS V //9 サポート環境の追加 STS 2

4. WIX アタッチエンジン 4. 1 FSDR 処理 システムの Web 資源結合動作であるアタッチ処理について 述べる. アタッチ処理は以下の 4 フェーズに分けられる. この一連の 流れを FSDR 処理とする. Find 処理 Select 処理 Decide 処理 Rewrite 処理

目次 P. ログイン P. TOPページ P3. 物件概要の更新 P4. ページの編集 P6. 項目の編集 全体概要 登録本告 先着本告 予告 の編集 P7. 項目の編集 フリーエリア の編集 P8. 編集エディターのご使用方法 P. 項目の編集 更新日 の編集 P3. 次回更新予定日アラートメール

2. saccess saccess SQL SQL SQL saccess SQL SQL PHP 3. saccess saccess saccess Web *1 [5] saccess * saccess saccess, SQ

スライド 1

Webアプリケーションを守るための対策

ログイン画面とメニュー 5 スマートフォン / 携帯 web 投票について スマートフォンからの投票はこちら をクリックすると スマートフォン投票 ( のログイン画面にリンクします スマートフォン / 携帯 web 投票の推奨環境 をクリックすると サポート情報

4. ファイルアップロード機能 使い方 ファイルをドラッグ & ドロップ した状態 図 4-1: ファイルアップロード画面 ( 例 ) 1. 送信するファイルをドラッグ & ドロップしてください 送信するファイルの右のエリアをマウスでクリックする事により 従来のエクスプローラー形式のアップロードも可

Transcription:

別紙 脆弱性体験学習ツール AppGoat ハンズオンセミナー 演習解説

SQL インジェクションの脆弱性

[ 演習 ] AppGoat を用いた疑似攻撃体験 SQL インジェクションのテーマ 不正なログイン ( 文字列リテラル ) 画面上に Congratulations!! と表示されると演習クリアです 3

脆弱性のある箇所を特定する ログイン ID またはパスワードにシングルクォート ' を入力し ログインボタンをクリックして ウェブアプリケーションの挙動を確認しましょう その結果 下記のように通常とは異なるエラーメッセージが表示されることが確認できます 入力値により SQL 文の構文が壊れた可能性がある SQL インジェクションの脆弱性が存在する可能性 4

入力値と SQL 文の関係 ログイン ID パスワードに入力した値が SQL 文の下記の箇所に展開される 展開される際の処理に問題があると SQL 文の挿入が可能になる 5

攻撃の流れを確認する 1. 攻撃者がオンラインバンキングのログインフォームの ID 欄に適当な文字列 パスワード欄に ' OR 'A'='A の文字列を入力し ログインを試みます 2. その結果 攻撃者が山田さんとしてログインできてしまいます 6

なぜ SQL 文の挿入が可能だったのか? DBMS において特別な意味を持つ記号文字 ' の扱いが不適切だったため SELECT * FROM user WHERE id='$i' AND pass='$p'; $i=yamada $p=foo の場合 : SELECT * FROM user WHERE id='yamada' AND pass='foo'; '; $i=yamada $p=foo' OR 'a'='a の場合 : SELECT * FROM user WHERE id='yamada' AND pass='foo' OR 'a'='a';'; 変数中の が文字列リテラルの区切り文字として解釈され SQL 文の構文を書き換えられてしまった 7

[ 演習 ] AppGoat を用いた疑似攻撃体験 SQL インジェクションのテーマ 情報漏えい ( 数値リテラル ) 画面上に Congratulations!! と表示されると演習クリアです 8

脆弱性のある箇所を特定する ID yamada でログインし 口座番号 1000001 の口座残高照会のページを参照しましょう ページ参照時の URL の account_id パラメータ値に a を入力し アクセスしてみましょう その結果 下記のようなエラーメッセージが表示されることが確認できます 入力値により SQL 文の構文が壊れた可能性がある SQL インジェクションの脆弱性が存在する可能性 9

入力値と SQL 文の関係 URL のクエリストリングに入力した値の一部が SQL 文の下記の箇所に展開される http://localhost/web/scenario109/vulsoft/bank.php? page=3&account_id=99 OR 1=1 10

攻撃の流れを確認する 1. ログイン済みの攻撃者が 下記の URL にアクセスします http://localhost/web/scenario109/vulsoft/bank.php?page=3& account_id=99 OR 1=1 2. その結果 ログイン済みの攻撃者が他人の口座残高を閲覧できてしまいます 11

なぜ SQL 文の挿入が可能だったのか? 変数に数値が入ることを想定している箇所に 数値以外の文字が出力され 文字列として扱われてしまったため SELECT * FROM account WHERE id='$i' AND account_id=$ai; $i=yamada $ai=99 の場合 : SELECT * FROM account WHERE id='yamada' AND account_id=99; ; $i=yamada $ai=99 OR 1=1 の場合 : SELECT * FROM account WHERE id='yamada' AND account_id=99 OR 1=1; 変数中の OR が SQL 文の OR 演算子として解釈された 12

クロスサイト スクリプティングの脆弱性

[ 演習 ] AppGoat を用いた疑似攻撃体験 クロスサイト スクリプティングのテーマ アンケートページの改ざん ( 反射型 ) 画面上に Congratulations!! と表示されると演習クリアです 14

脆弱性のある箇所を特定する アンケートページに存在する脆弱性の箇所を探します 複数の入力欄に '>"><s> を入れて アンケート内容に関するエラーページを表示してみましょう エラーページ出力 (HTML 生成 ) 時において 名前欄に入力した値がそのまま使われていることが確認できます HTML ソース ウェブブラウザ上の表示 15

疑似攻撃に使うスクリプトについて アンケートページの内容を書き換えるスクリプトを作成し 演習環境に対して クロスサイト スクリプティングの脆弱性を突いてみましょう 例えば アンケートページで下記のスクリプトが実行されると アンケートページの一部が書き換わります <script>document.getelementbyid("account").innerhtml = '<font color="blue" size="3"> もれなく一万円をプレゼントいたします 名前 住所 口座番号を入力してください </font>';</script> HTML の id 属性値が account の要素の内容を innerhtml プロパティで置き換えています 16

攻撃の流れを確認する 1. 攻撃者が掲示板に罠のリンクを作成します 罠のリンクには 先ほど作成したスクリプト文字列を含めます 2. 利用者が罠のリンクをクリックし アンケートページにアクセスします 3. その結果 利用者のウェブブラウザ上でスクリプトが実行されます 17

なぜ HTML タグの挿入が可能だったのか? 文字列を出力する際 文字そのもの として出力することを想定しているにもかかわらず その実現に必要な処理 ( エスケープ処理 ) を実装していないため 例 : < < > > " " & & など 文字そのもの として出力することを想定した箇所に HTML タグ として出力することができてしまうため セキュリティ上の問題となる 18

[ 演習 ] AppGoat を用いた疑似攻撃体験 クロスサイト スクリプティングのテーマ 掲示板に埋め込まれるスクリプト ( 格納型 ) 画面上に Congratulations!! と表示されると演習クリアです 19

脆弱性のある箇所を特定する 掲示板に存在する脆弱性の箇所を探します 複数の入力欄に '>"><hr> を入れ投稿し 投稿結果を確認してみましょう 投稿結果の HTML ソースを確認すると 本文欄に入力した値が HTML の構成要素としてそのまま使われていることが確認できます HTML ソース ウェブブラウザ上の表示 20

攻撃の流れを確認する 1. 攻撃者が掲示板にスクリプトを埋め込みます 2. 利用者が掲示板にアクセスします 3. その結果 利用者のウェブブラウザ上でスクリプトが実行されます 21

なぜ HTML タグの挿入が可能だったのか? 学習テーマ アンケートページの改ざん ( 反射型 ) と同じく HTML におけるエスケープ処理を適切に実装していないため 例 : < < > > " " & & など " で括られた属性値の場合は 属性値に含まれる " を文字実体参照 " にエスケープ処理する必要がある HTML ソース ウェブブラウザ上の表示 22

クロスサイト リクエスト フォージェリ (CSRF) の脆弱性

[ 演習 ] AppGoat を用いた疑似攻撃体験 クロスサイト リクエスト フォージェリのテーマ 意図しない命令の実行 画面上に Congratulations!! と表示されると演習クリアです 24

脆弱性のある箇所を特定する ID yamada でログインし 設定変更ページの HTML ソース等からどのようなリクエストを送信しているのか確認しましょう 設定変更ページから 個人情報公開 の設定を 公開する に変更するリクエストを送信してみましょう 送信するリクエストに 第三者が予測困難な情報が含まれていないことが確認できます 25

攻撃の流れを確認する 1. 攻撃者が掲示板に 罠リンクを含む投稿をします 2. SNS サイトにログイン済みの利用者が 掲示板にある罠リンクをクリックします 3. その結果 罠リンクをクリックした利用者が SNS サイトの設定を変更するリクエストを送ってしまい 個人情報を公開する設定に変更してしまいます 26

なぜ意図しない処理が実行されたのか? ログインした利用者からのみ受け付ける処理について 利用者が意図したリクエストであるかどうかを識別する仕組みがないため 攻撃者 リクエストの違いを識別することができない A: 罠ページからのリクエスト ログイン済みの利用者 A B: 利用者が意図したリクエスト ウェブアプリ 27