👿
Webアプリケーションに関する脆弱性をまとめてみる(後編)
主な脆弱性一覧
- クロスサイトスクリプティング(通称:XSS)
- SQLインジェクション
- OSコマンドインジェクション
↓↓↓今回はここから↓↓↓ - HTTPヘッダインジェクション
- メールヘッダインジェクション
- ディレクトリトラバーサル
HTTPヘッダインジェクション
- 概要
ユーザの入力データをもとに、HTTPメッセージのレスポンス(メッセージヘッダ、ボディ)を
生成するアプリケーションにおいて、任意のヘッダ情報等を追加する攻撃 - 影響
任意のCookie情報を挿入され、不正ログインされる
偽の情報を表示される、など - 対策
1.直接HTTPヘッダを出力させるのではなく、APIをかまして出力させる
2.改行コードを削除する(認識させない) - 参考
安全なウェブサイトの作り方 - 1.7 HTTPヘッダ・インジェクション
メールヘッダインジェクション
- 概要
メールフォーム等で、不正なメールヘッダを混入する攻撃 - 影響
意図しないアドレスに迷惑メールを送られてしまう - 例
脆弱性を有するフォームにて、Fromのアドレスをフォームから指定するような場合、
kumata@hogehoge.jp%0d%0aBcc%3a%20
※「%0d%0a」はCR+LFの改行コード
「%3a」は「:」
「%20」はスペースをそれぞれ表す
- 対策
1.メールヘッダにユーザからの情報を受け付けられるような仕組みにしない
2.改行コードのチェックを行う - 参考
メールヘッダ・インジェクションとは | 分かりやすく図解で解説
ディレクトリトラバーサル
- 概要
ユーザの入力内容からサーバ内部のファイルにアクセスするような際に、
ファイル名に「../」や「..\」(※1つ前の階層に戻る指定)等を入れるような攻撃 - 影響
意図せぬファイルが閲覧できてしまう - 例
脆弱性が存在するようなWebアプリケーション上で、
/var/files/という階層にデータを保存しているような構造で、
../log/messages
上記のような参照をすると"/var/log/messages"が閲覧できてしまう可能性がある
- 対策
1."basename"コマンドや関数を使用し、文字列からディレクトリ名を取り除く
2.「/」「../」「..\」などが入力値に含まれていた場合、エラーを返すようにする
3.ファイルのアクセス権を適切にする
所感
メールヘッダインジェクションやディレクトリトラバーサルは、
Unixの知識やメールサーバの運用経験があるからイメージしやすかった。
Discussion