2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WEBアプリケーションの脆弱性まとめ

Posted at

#SQLインジェクション
概要
DBに投げるクエリの中に不正な命令文を注入して、意図しない操作を実行させる攻撃手法。
クエリ中に外部から指定されたパラメータを使用する場合に考慮する必要がある

被害
外部から任意のクエリを実行できてしまう状態なため、DBにある情報が漏洩したり改ざんされたりする

対策
外部から受け取るパラメータにはサニタイズ(無効化)を施して、意図しないクエリが混入しないようにする

#OSコマンド・インジェクション
概要
OSコマンドを実行する部分に不正な文字列を注入して、意図しない操作を実行する攻撃手法。
システムに対して何らかの操作(ファイルの実行とかディレクトリの作成とか)を行う際、コマンドの中に外部から指定されたパラメータを含む場合に考慮する必要がある

被害
外部から任意のOSコマンドを実行できてしまう状態なため、乗っ取られたり踏み台に使われたりする

対策
外部から受け取るパラメータにはサニタイズを施して、意図しないOSコマンドが混入しないようにする

#パストラバーサル (ディレクトリトラバーサル)
概要
何かしら外部のファイルを参照する際に不正なパスを指定して、本来は見ることのできないファイルにアクセスする攻撃手法。
外部から指定されたパラメータをファイル名やパスに使用する場合に考慮する必要がある。
脆弱性自体はOSコマンド・インジェクションと同様で、攻撃の仕方が違うだけ

被害
本来は見ることのできないファイルが公開されてしまっている状態なため、プライベートな情報が漏洩してしまう

対策
外部から受け取るパラメータに意図しない文字列が混入しないようにする。
または、パーミッションを適切に設定する

#クロスサイトスクリプティング(XSS)
概要
スクリプトが実行可能な脆弱性をもつwebサイトへ、不正なスクリプトが埋め込まれたリンクなどを経由してアクセスさせ、ユーザが意図せずに不正なスクリプトを実行してしまう攻撃手法。
上で紹介した3つの攻撃手法はWEBアプリケーションの提供側が標的だが、XSSではユーザ側が標的になる。
外部からの入力をもとに動的にページを生成する場合に考慮する必要がある

被害
ユーザのブラウザ上で任意のスクリプトが実行可能な状態であるため、WEBサイトが改ざんされて表示されてしまったり、偽サイトへ移動させられたり、cookieを盗まれたり固定化されたりする

対策
外部から受け取るパラメータにはサニタイズを施して、スクリプトが埋め込まれないようにする

#クロスサイトリクエストフォージェリ(CSRF)
概要
不正なリクエストを受け付けてしまう脆弱性をもつwebアプリケーションにログインした状態で、悪意のあるリンクなど踏ませ、ユーザが意図しないリクエストを送信してしまう攻撃手法。
XSSと同様に、CSRFもユーザ側が標的になる。

被害
ログイン状態でのみ可能な操作を不正に実行されてしまうため、乗っ取りや、なりすましなどの被害につながる

対策
送られてきたリクエストが正しいもの判別するため、トークンなどを用いて正しいページ遷移でのリクエストかを確認する

#HTTPヘッダ・インジェクション
概要
HTTPのレスポンスヘッダに改行文字を混入させて、ユーザのブラウザで意図しない動作が実行される攻撃手法。
HTTPヘッダ・インジェクションもユーザ側が標的になる。
外部からの入力をレスポンスヘッダに含める場合に考慮する必要がある

被害
HTTPレスポンスに不正な文字列が追加されるため、Cookieの値を固定されたりレスポンスbodyを改ざんされたりする

対策
外部からの入力にはサニタイズを施して、レスポンスヘッダに意図しない文字列が混入しないようにする

#オープンリダイレクト
概要
リダイレクト先が不正に変更され得る脆弱性を持つページへ、悪意のあるリダイレクト先を設定したリンクを踏ませ、意図しないサイトへ移動させられる攻撃手法。
オープンリダイレクトもユーザ側が標的になる。
外部からのパラメータを使用してリダイレクトを行う場合に考慮する必要がある。

被害
不正に設定されたリダイレクト先でパスワードなどを入力してしまい、機密情報が漏洩する

対策
外部からの入力にはチェックを行い、不正なリダイレクト先が設定されないようにする。
または、ホワイトリストを設定してそこへのリダイレクトのみを許可する。

#まとめ
ほとんどの攻撃手法にも共通する対策は、外部から受け取るパラメータをそのまま使用しないということ

名称 攻撃方法 標的
SQLインジェクション SQL文を評価する部分に不正な文字列を混入 DBサーバ
OSコマンド・インジェクション OSコマンドを評価する部分に不正な文字列を混入 WEBサーバ APIサーバ
パストラバーサル 不正なファイル名やパスを指定
XSS 不正なパラメータを含むリンクを踏ませる ユーザ
CSRF
HTTPヘッダ・インジェクション
オープンリダイレクト リダイレクト先を改ざん
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?