Hatena::ブログ(Diary)

temitaの不思議空間

2010-05-20

Webアプリケーションへの攻撃を意識する

01:07 | Webアプリケーションへの攻撃を意識するを含むブックマーク

ウェブ攻撃のいろいろ

  • 概要
  • 被害
  • 予防

XSS(Cross Site Scripting)

  • 動的なWebページにスクリプトを混入させる。
  • 他のページへ誘導、CSRFへの踏み台、秘密情報の窃取、ページ偽装。
  • 入力された値にHTMLタグを許可しない。入力された値を直接表示しない。値の出力にはタグを無効化する。

SQL Injection

  • 不正にデータベースを操作する。
  • 機密情報の漏洩、認証の回避による不正ログイン、情報の改ざん
  • 特殊文字を許可しない。parameterized query(パラメタライズドクエリ)を用いる。できるだけ入力された値を直接使用しない。

second-order SQL injection

blind SQL injection

CSRF(Cross Site Request Forgaries)

  • 不正なスクリプトリダイレクトが仕込まれたページから、別のWebサイト上で何らかの操作(掲示板への書き込みなど)を行なわせる攻撃手法。
  • 意図しない別サイトへの書き込み。
  • サイト外からのリクエストの受信拒否。ヘッダの参照元確認やチェックコードによる一貫性の確認を行う。

ざっくりとした違い

Null Byte Atack

  • バイナリセーフでない関数にNULL バイト("\x00" や "\0" として表される終端文字)を含めて悪意のコードの実行など誤動作を起こさせる。
  • 意図しないスクリプトの実行。
  • 入力データからNULLバイト文字の削除。

Directory Traversal

  • "../../"と相対的にさかのぼり、システム内の任意ファイルへアクセスする攻撃。
  • ルートパスワードなどの窃取。
  • ".."をbasename()などで適切に無効化するか"/"を禁止する。

HTTP Response Splitting

  • レスポンスヘッダーにCRLF(%0d%0a)を含めて二つのレスポンスに分割し不正なヘッダー内容やボディ内容作り出す攻撃。
  • 不正なリダイレクトセッション情報や情報の窃取、XSS、ページの偽装、キャッシュによる被害拡大。
  • ヘッダー内にCRLF(%0d%0a)を許可しない。最近の Apache , Tomcat では改行コードを含むヘッダを禁止している。

Session Hijacking

  • sessionIDやsessionCookieを盗んで他人が確立した通信路を横取りする。
  • 不正ログイン、機密情報の窃取。
  • 類推が難しいセッションIDやクッキーを生成し、セッションIDやクッキーの有効期間を短くする。

Session Fixation

File Upload Attack

OS Command Injection

  • 不正なOSコマンドを入力に埋め込むことによりサーバ上のOSを不正に操作する攻撃。
  • ルートパスワードなどの窃取。OSコマンドの不正な実行。
  • コマンド実行にリクエストされた入力パラメータを直接含めない。入力文字列が正当なものであるかチェックする。

Parameter Manipulation

Brute force atack

  • あらゆる文字の組み合わせて不正ログインを試みる総当たり攻撃。
  • 不正ログイン
  • アクセス間隔の監視。スクリプトからのアクセスを禁止する。登録時に画像認証を含める。

Backdoor & Debug Options

  • 開発用、管理者用の秘密の入り口を探す。
  • 不正ログイン
  • "admin" や "debug=1" など分かりやすい入口を隠す。

Forceful Browsing

おわりに
正式名称かは分かりませんが名称を知っていれば対策も取りやすいはずです。
ユーザの入力を求めるものに特殊文字が必要な場合は少ないと思うので
ホワイトリスト特殊文字を受け入れない(禁止)のが手っ取り早いでしょうか。
よくウェブ攻撃にはサニタイズという言葉が出てきますが、禁止と無効化が混在して
曖昧な表現になっているみたいです。高木浩光さんの記事が参考になります。
http://takagi-hiromitsu.jp/diary/20051227.html

Web攻撃いろいろの詳しくは下の参考を。
参考:順不同
http://www.fortify.com.tw/vulncat/ja/vulncat/sql/header_manipulation.html
http://gihyo.jp/dev/serial/01/php-security/
http://d.hatena.ne.jp/zatsuso/20080209/p1
http://d.hatena.ne.jp/owa-tayo/20100129/1264714595
http://trac.openpne.jp/wiki/pne-spec
http://d.hatena.ne.jp/gallu/20060105/p1
http://www.itmedia.co.jp/enterprise/articles/0506/16/news030.html

トラックバック - http://d.hatena.ne.jp/temita/20100520/1274371625