サイバーセキュリティ基礎論 ― it社会を生き抜くために web 00.pdf ·...

23
サイバーセキュリティ演習 岡村耕二

Upload: others

Post on 07-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

サイバーセキュリティ演習

岡村耕二

Page 2: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

演習システム利用上の注意

•演習で行ったことを、演習システム以外のパソコンで絶対に行わないこと。•好奇心でしたことが、社会的に重い制裁を受ける可能性があります。

Page 3: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

最近のサイバー攻撃

• Web サイトを見ただけで感染する。

• パスワードは盗まれていないのに• 重要な情報が盗まれる。

• 自分のポータルが他人からアクセスされる。

Page 4: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

Web の仕組み (1)

パソコン

サーバHTTP RequestURL

HTTP ResponseHTML

<!doctype html public "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp"><meta http-equiv="Content-Language" content="jp"><link rev=made href="mailto:[email protected]"><TITLE>Home Page of Koji OKAMURA</TITLE></HEAD><BODY><H3 Align="RIGHT"><A HREF="index.html">English</A>/Japanese</H3><HR><BR>岡村 耕二 (おかむら こうじ) <BR><BR>九州大学 教授 <BR> <BR>【略歴 】<UL><LI>1988年 3月 九州大学 工学部 情報工学科 卒業<LI>1990年 3月 九州大学大学院 工学研究科 情報工学専攻 修了<LI>1990年 4月 三菱電機 株式会社 情報電子研究所 入所<LI>1993年 4月 奈良先端科学技術大学院大学 情報科学研究科 助手<LI>1996年 4月 神戸大学 総合情報処理センター 助手<LI>1998年 3月 九州大学大学院 システム情報科学研究科 情報理学専攻 助手<LI>1998年 4月 九州大学 情報処理教育センター 助教授<LI>1998年 10月 九州大学大学院 システム情報科学研究科 (併任)<LI>1999年 4月 九州大学 工学部 兼任<LI>2000年 4月 九州大学 情報基盤センター 助教授

用意されているHTMLファイルをURLで指定する。

HTTP (HyperText Transfer Protocol)HTML (HyperText Markup Language)URL (Uniform Resource Locator)

Page 5: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

Webの仕組み(2)

パソコン

サーバHTTP RequestURL(PHPを指定)

HTTP ResponseHTML <html>

<head>

...

</head>

<body>

<?php

print("Hello, World!¥n");

?>

</body>

</html>

"Hello, World!"と印字して,改行しなさい.

<html>

<head>

...

</head>

<body>

Hello, World!

</body>

</html>

PHP (PHP: Hypertext Preprocessor)

Page 6: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

Webの仕組み(3)

パソコン

Webサーバ

HTTP RequestURL(PHPを指定)

HTTP ResponseHTML

データベース

Page 7: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

パスワードは盗まれていないのに重要な情報が盗まれる。• データベースシステムの脆弱性を狙った攻撃

• SQL インジェクション攻撃

Page 8: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

SQLとは

• SQLは、リレーショナルデータベース管理システム (RDBMS) において、データの操作や定義を行うためのデータベース言語(問い合わせ言語)

Webサーバ データベース

SQL

Page 9: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

リレーショナルデータベース管理システム(RDBMS)

• データを表に似た構造で管理するデータベース。複数のデータ群が関係と呼ばれる構造で相互連結可能

userテーブル

ログインID(id:文字列)

ユーザ名(name:文字列)

パスワード(password:文字列)

yamada Yamada Taro P@ssword

suzuki Suzuki Jiro 3f858c

accountテーブル

ログインID(id:文字列)

口座番号(account_id:数値)

残高(balance:数値)

yamada 1000001 100,000

yamada 1000002 200,000

suzuki 1000003 300,000

関係を持った複数のテーブルに分けて管理

Page 10: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

SQLの基礎

• データを検索する場合、

SELECT カラム1、カラム2 FROM テーブル名[WHERE <条件>];

• SELECT * FROM user WHERE id=‘yamada’;• SELECT *:すべてのカラムを検索する

• FROM user:userテーブルから

• WHERE id=‘yamada’:id=yamadaに一致するレコードの

Page 11: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

SQLの基礎

• シングルクォート(’)• SQLでは、データの区切り文字として使う。

• シングルクォートで囲むことで文字列リテラルを定義する

• 数値リテラルの定義の場合は不要

• コメント(--)• SQLでは、2連続のハイフン(--)以降は、コメン

トとして扱う

Page 12: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

SQLインジェクションとは

• 悪意のあるSQLを注入(インジェクション)し、Webアプリケーションが意図しないSQL文を実行してしまうことで、データベースを不正に操作されてしまう脆弱性

Page 13: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

SQLインジェクションの原理

• ユーザからの入力値をそのまま文字列リテラルに連結してSQL文を組み立てることにより、意図しないSQL文を実行され、データベースを不正に操作されてしまう

Page 14: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

SQLを使った認証判定

• ログインページの認証判定でSQLはよく使われる。• WHERE句の条件にあてはまるならば認証OK

• WHERE句の条件にあてはまらないならば認証NG○:SELECT * FROM user WHERE id=‘yamada’ AND password=‘P@ssword’

×:SELECT * FROM user WHERE id=‘suzuki’ AND password=‘12345678’

userテーブル

ログインID(id:文字列)

ユーザ名(name:文字列)

パスワード(password:文字列)

yamada Yamada Taro P@ssword

suzuki Suzuki Jiro 3f858c

Page 15: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

一般的なSQL文の組み立て処理のやり方

• 指定したidの個人情報をuserテーブルから取得するSQL文をユーザからの入力値(yamada)を利用して文字列連結により組み立てる

Page 16: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

文字列リテラルを用いたSQLインジェクションの攻撃手口

• シングルクォート(’)とコメント(- -)を使って、WHERE句の条件が必ずTRUE(真)になるように内容を変更する

Page 17: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

SQLインジェクション体験

• パスワードを使わずに不正ログインをする。

10.0.0.100rootp@ssw0rd3

Webサーバ データベース

10.0.0.1

Page 18: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

パスワードは盗まれていないのに自分のポータルがアクセスされる。

• クッキーが盗まれる

• クッキーとは

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

総務省:国民のための情報セキュリティサイト

Page 19: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

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

• ウェブアプリケーションがユーザから受け取った入力データを、そのままの形(実行可能な形)でウェブページの出力に利用してしまう

Page 20: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

<html>

<head>

...

</head>

<body>

<?php

?>

</body>

</html>

入力したものが表示される。

<html>

<head>

...

</head>

<body>

</body>

</html>

Printf(“%s”,$_POST[“name”]);

Script が書かれるとそれが実行される。

Page 21: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

反射型クロスサイト・スクリプティングの攻撃手口

• HTMLの文法上特別な意味を持つ特殊文字がそのまま使えることを利用して、表示内容を書き換えるスクリプトをURLに組み込む。• JavaScriptの利用は、スクリプトタグを使う。

• <script type=“text/javascript”>~</script>:javascript利用の宣言

特殊文字

&

<

>

Page 22: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを

クロスサイトスクリプティング体験• 名前を入力させるサイトで、警告メッセージや

クッキーを不正に表示させる。

10.0.0.100rootp@ssw0rd3

Webサーバ

10.0.0.1

Page 23: サイバーセキュリティ基礎論 ― IT社会を生き抜くために WEB 00.pdf · •HTMLの文法上特別な意味を持つ特殊文字がそのまま使え ることを利用して、表示内容を書き換えるスクリプトを