サイバー大学生のマルチリンガルな日々

現役サイバー大学生3年生が外国語からプログラミング言語を使った日々を垂れ流す

Webに対しての攻撃手法とその対策について

f:id:humuhimi:20190113193833j:plain

web攻撃


 

どうもおはようございます

 

サイバー大学生のhumuです

 

今日は真面目にwebサイト上でよくある

サイバー攻撃について書いていこうと思います。

 

ありきたりですけど、よかったら見て見てくださいね!

 

 

攻撃手法の種類について

 

webアプリの入力データチェックの不備をついた攻撃として以下がある。

 

 

 

 

XSSとその対策

 

webアプリケーションの入力データを悪用したデータ攻撃の一つ

 

webサイトのプログラムの脆弱性を利用した攻撃である

 

特に、掲示板や情報検索サイト、登録情報確認画面などに対する攻撃手法

 

 

ユーザが入力したデータを元に、webアプリケーションが動的にHTMLを作成する仕組みになっているページにおいて、入力データのチェックに不備のある場合成立する。

 

 

www.htmq.com

 

つまり、悪意あるサイトを仲介させて、二つのサイトに跨って最終的にクライアント環境に不正なスクリプトを実行させることから名ずけられた

 

 

XSSの実行手順

 

1.悪意あるサイトにクッキー情報を盗まれる場合

 

time-space.kddi.com

 

例:

1.ユーザが悪意のあるwebサイトを閲覧

2.悪意のあるリンクをクリック

3.ウェブページを出力

4.そのサイトが自動的に悪意あるスクリプトをユーザに転送

5.ユーザのブラウザが悪意あるスクリプトを(クッキーを転送する)を実行

6.悪意のない(しかし、XSS脆弱性のある)サイトにスクリプトを転送

6.そのターゲットサイトがwebページを出力し、クッキーを発行

7.それをクライアントに送信

8.クライアントがスクリプトを実行して、クッキーを悪意のあるサイトに転送

それにより、クッキーが漏洩する

 

 

クッキー漏洩により想定される被害

 

1,Cookiesに個人情報が入っている場合:IDやパスワードが流出 

 

サイトへの勝手な登録。スパムメールの送信。

 

 

2,CookiesにセッションIDが入っている時

 

セッションハイジャック→ショッピングサイトで勝手に買い物されてしまう。

 

 

f:id:humuhimi:20190113212803p:plain

悪意のあるサイバー攻撃

悪意あるスクリプトとは

 

  • クッキーを盗む
  • データ改ざん
  • クライアントのディスクをフォーマット
  • バックドア作成
  • フィッシング。ユーザのID・パスワードを盗む
  • 悪意あるサイトへの誘導
  • ワンクリックサイトへの誘導
  • etc

  

XSS脆弱性の有無を確認する方法

 

 

サイトの入力画面で実行可能なコードを入力する。

プログラムに入力データチェックの不備があるとそのコードが実行されてしまう。

 

例:住所入力欄に以下のコードを入力:

<script>alert('hello')</script>

 

もし、プログラムに不備があると上記のコードが解釈・実行され、アラートがポップアップする。

 

XSS対策

 

サニタイジング(無害化,sanitizing)

 

入力データを無害化する。

その手法の一つにエスケープ処理がある

 

エスケープ処理とは、入力データに含まれる、不正の原因となるような記号を特殊文字を適切な文字列に変換すること

 

例:

入力データに「&」や「<」などのメタキャラクターが存在した時以下のように変換する。

「&」→「&amp」。「<」→「&lt」など

 

OSコマンドインジェクション

 

 

OSコマンドインジェクションとその対策

 

 

OSコマンドインジェクションとは

 

ユーザの入力データを元に、OSコマンドを呼び出して処理するwebページにおいて成立する

 

 

 

不正なコマンドで以下のようなことを実行する攻撃手法

  1. 任意ファイルの読み出し、変更・削除
  2. パスワードの不正取得

 

OSコマンドの読み出しは、言語によって用意されている関数を用意て実行される。

 

 

perlでの関数の例:

Perlのopen関数などではユーザが指定したファイルの操作に使用されるケースが多い。

パラメータの指定により、外部コマンドOSコマンドの呼び出しが可能。

 

 

これを実行されると任意のコマンドが実行可能になってしまう可能性がある。

 

 

OSコマンドインジェクション対策

 

  • OSコマンドの呼び出し可能な関数を極力避ける
  • 入力データに使用可能な文字種類や書式等のルールを明確にする。文字種を極力制限する
  • 上記のルールにしたがって入力データをチェックする
  • ルールに使わないデータをエラーとして扱う。 エスケープ処理は行わない。

 

 

SQLインジェクションとその対策

 

不正にSQL文を注入する攻撃手法

 

 

ウェブアプリの開発者が想定していないSQL文を実行することで、データベースシステムを不正に操作する攻撃手法である。

 

 

アプリケーションが入力値を適切にエスケープしないままSQLを展開することで発生する

 

 

例1

複数のSQL文を入力することによるデータの破壊や改ざん

 

例2

ストアドプロシージャを実行することによる情報の漏洩や改ざん

 

例3(ブラインドSQLインジェクション)

SELECTの条件式にデータベース内の情報を確認するようにサブクエリを含ませ、その抽出の有る無しによってい本来参照することのできないデータベース内の情報(テーブル名など)を知る方法。

 

e-words.jp

 

 

SQLインジェクションの対策

 

エスケープ処理をする。

 

・意図したデータ以外(数値など)を入力しないようにする。

 正規表現などを使用して、意図したデータ以外のデータが送信されたらDELETEを 実行させないようにする。

 

・DELETEコマンドを含むクエリを実行できないようにする。

・意図しないタグを実行させないようにする。

 

SQLインジェクション対策2

 

・入力されたタグを取り除く仕組みを設定する。

・入力されたタグなどの特殊文字を別の文字列などに変換するPHPの関数「htmlspecialchars(文字列)」などを使用する。

 

まとめ

 

XSS(クロスサイトスクリプティング)とその対策

 

悪意のあるサイトを仲介。二つのサイトにまたがってクライアント環境に不正なスクリプトを実行。

対策:サニタイジング

 

OSコマンドインジェクションとその対策:

不正にOSコマンドを呼び出して実行。

対策:OSコマンド呼び出し可能な関数を極力しようしない。

 

SQLインジェクション

不正にSQL文を注入させる攻撃手法。

対策:エスケープ処理。

 

 

 

最後まで、読んでくださってありがございます。

 

みんなwebサイトを使用する際は注意して、

楽しく使って行きましょう!

 

また明日!