■ はじめに
セキュリティ攻撃や脆弱性についてまとめる。
目次
【0】脆弱性について 1)脆弱性の大別 2)セキュリティ問題の根源 【1】スクリプト関連 1)クロス・サイト・スクリプティング 2)クロス・サイト・リクエスト・フォージェリ 【2】パス・ディレクトリ操作関連 1)パス トラバーサル 2)パス リスティング 【3】セッション操作関連 1)セッションハイジャック(Session Hijack) 2)セッションフィクセーション(Session Fixation) 【4】Dos攻撃関連 1)DoS攻撃(Denial of Services attack) 2)DDoS攻撃(Distributed Denial of Service Attack) 【5】SQL関連 1)SQLインジェクション 【6】OS関連 1)OSコマンド・インジェクション 【7】メール関連 1)メールヘッダ・インジェクション 【8】Webサイト関連 1)クリックジャッキング 2)iframeインジェクション 3)パスワードリスト攻撃 4)パラメータ改ざん(パラメータ マニピュレーション) 5)強制ブラウジング(Forceful Browsing) 6)Brokenアクセスコントロール 7)Cookieポイズニング 【9】通信関連 1)DNSキャッシュポイズニング(DNS cache poisoning) 2)DNSリバインディング(DNS Rebinding) 3)IP スプーフィング(IP Spoofing) 【10】その他著名な脆弱性 1)バッファオーバーフロー 【11】PHP固有(?) 1)Nullバイト攻撃 2)HTTPレスポンス分割攻撃 3)eval攻撃 4)インクルード攻撃 a) リモートファイル・インクルード攻撃 b) ローカルファイル・インクルード攻撃 5)ファイルアップロード攻撃
【0】脆弱性について
1)脆弱性の大別
[1] DOS攻撃 [2] 情報漏洩 [3] 権限奪取 [4] 権限昇格
2)セキュリティ問題の根源
[1] 悪意のあるソフトウェア [2] setuid/setgid [3] サーバ / デーモン(deamon)
【1】スクリプト関連
1)クロス・サイト・スクリプティング
* ページ内に悪意のスクリプトやタグが埋め込まるセキュリティホールの一種。 * 詳細は、以下の関連記事を参照のこと。
クロス・サイト・スクリプティング
https://dk521123.hatenablog.com/entry/2016/01/01/102800
2)クロス・サイト・リクエスト・フォージェリ
* サイトに、スクリプトや自動転送によって、 閲覧者に意図せず別のサイトで、掲示板への書き込みなどを行わせる攻撃手法 * 詳細は、以下の関連記事を参照のこと。
クロス・サイト・リクエスト・フォージェリ
https://dk521123.hatenablog.com/entry/2016/01/02/103500
【2】パス・ディレクトリ操作関連
1)パス トラバーサル
* 上位ディレクトリへの移動コマンド「../」などを直接指定することで 非公開ファイルにの不正アクセスする攻撃
2)パス リスティング
* ディレクトリで終わるURLを指定することにより、 その配下のディレクトリ内容をリスト表示する攻撃
【3】セッション操作関連
1)セッションハイジャック(Session Hijack)
* セッションIDやセッション・クッキーを盗むことにより、 別のユーザーがなりすまして、インターネットに不正アクセスする手口。
2)セッションフィクセーション(Session Fixation)
* 第三者(攻撃者)が予め用意しておいたセッションIDを ユーザー(攻撃対象者)に使わせて、 後からユーザーになりすます攻撃のこと
【4】Dos攻撃関連
1)DoS攻撃(Denial of Services attack)
* 大量のデータや不正なデータを送りつけ、 相手方のシステムを正常に稼働できない状態に追い込む攻撃
2)DDoS攻撃(Distributed Denial of Service Attack)
* DDoS(分散サービス妨害)とは、第三者のマシンに攻撃プログラムを仕掛けて 踏み台にし、その踏み台とした多数のマシンから標的とするマシンに 大量のパケットを同時に送信する攻撃。
http://www.atmarkit.co.jp/aig/02security/ddosattck.html
【5】SQL関連
1)SQLインジェクション
* SQL命令に不正なパラメータを引き渡すことで、 開発者が意図していなかったSQLが生成・実行できてしまうこと * 詳細は、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2016/01/09/113000
【6】OS関連
1)OSコマンド・インジェクション
* データの入力を受け付けるWEBサイトで、 OSに対するコマンドを紛れ込ませて不正に操作する攻撃
http://senmon.cfc.ac.jp/studentreport/report2/OS.html
http://itpro.nikkeibp.co.jp/article/COLUMN/20070130/260021/?ST=selfup&P=2&rt=nocnt
【7】メール関連
1)メールヘッダ・インジェクション
* メールヘッダに不正な情報を混入させることで、 スパムメールなどを送信させること
【8】Webサイト関連
1)クリックジャッキング
* 悪意のあるサイト上でクリックした時に、別サイトの設定情報を変更させる * 詳細は、以下の関連記事を参照のこと。
2)iframeインジェクション
* WebサーバをSQLインジェクションなどの手段で乗っ取り、 HTMLファイルの中に iflameのソースコードを 埋め込み(インジェクション)攻撃する手法 * 詳細は、以下の関連記事を参照のこと。
3)パスワードリスト攻撃
* どこかのWebサイトから「流出した利用者ID」と 「パスワードのリスト」を用いて、 他のWebサイトに対してログインを試行する
4)パラメータ改ざん(パラメータ マニピュレーション)
* URLパラメータやhiddenフィールド、Cookieなどに 入れた値を書き換えて、サーバに送り返す攻撃
http://www.atmarkit.co.jp/ait/articles/0503/04/news092.html
5)強制ブラウジング(Forceful Browsing)
* 認証が必要なコンテンツに対して、 認証を経ず不正アクセスされる攻撃
http://www.atmarkit.co.jp/ait/articles/0909/01/news158.html
http://japan.zdnet.com/article/20363365/4/
http://tumblr.tokumaru.org/post/43394245031/%E5%8B%9D%E6%89%8B%E3%81%AB%E6%9F%BB%E8%AA%ADweb%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B11%E3%81%AE%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AE%E5%B8%B8%E8%AD%98%E3%81%A8%E5%AF%BE%E7%AD%96
6)Brokenアクセスコントロール
* 認証後に遷移するコンテンツに対して、 URLをアドレスバーに直接入力してアクセスできてしまう脆弱性
http://www.atmarkit.co.jp/ait/articles/0511/22/news118_3.html
7)Cookieポイズニング
* Cookieに埋め込まれた内容を操作する攻撃
http://www.atmarkit.co.jp/ait/articles/0511/22/news118_2.html
【9】通信関連
1)DNSキャッシュポイズニング(DNS cache poisoning)
* あらかじめキャッシュDNSサーバに、偽の情報を覚え込ませ、 ユーザーが正しいアクセスを行ったつもりでも、偽のサイトに誘導する手法 * 詳細は、以下の関連記事を参照のこと。
2)DNSリバインディング(DNS Rebinding)
* DNSの情報を極めて短い時間で変更することにより、 罠サイトに仕掛けたJavaScriptから、 攻撃対象サイトに対して攻撃を仕掛ける技法 * 詳細は、以下の関連記事を参照のこと。
3)IP スプーフィング(IP Spoofing)
* 攻撃元の IP アドレスを隠ぺいするために、 偽の送信元IPアドレスを持ったパケットを作成し送ること
【10】その他著名な脆弱性
1)バッファオーバーフロー
* 大きな入力データを送り込むことで、 プログラムが確保したメモリサイズをあふれさせ、 予期せぬ動作を引き起こす (例えば、int型の値に対して、int maxを超えた値を入力した場合)
http://www.atmarkit.co.jp/ait/articles/0511/22/news118_4.html
* C言語でもある
https://atmarkit.itmedia.co.jp/ait/articles/1212/26/news006.html
【11】PHP固有(?)
1)Nullバイト攻撃
* 何らかのリクエストされた文字列に%00(ヌルバイト)を含めることで、 Webアプリケーション側のセキュリティーチェックをくぐり抜ける攻撃
http://qiita.com/tabo_purify/items/d7a67709f54865df891e
2)HTTPレスポンス分割攻撃
* header関数の引数に改行区切りの値を渡すことで 不正なヘッダを混入させること。
具体的な被害
* 具体的には、以下のような被害が起こる可能性がある。 + クッキーを盗まれる + セッションハイジャックの原因になる
対策
* ヘッダを動的に渡す場合、改行値を除去する
3)eval攻撃
* 関数eval()およびその応用関数に、 悪意あるリクエストを潜り込ませて任意のPHPコードを実行する攻撃
http://pgcafe.moo.jp/PHP/sec/main_9.htm
http://blog.quall.net/program/110/
4)インクルード攻撃
a) リモートファイル・インクルード攻撃
* サイト外のファイルをPHPコードとして実行させる攻撃
b) ローカルファイル・インクルード攻撃
サイト内の想定外のファイルを読み込ませる攻撃
http://pgcafe.moo.jp/PHP/sec/main_8.htm
5)ファイルアップロード攻撃
* ファイルアップロード時の付加情報を偽装し、 不正なファイルをアップロードする攻撃
http://blog.ohgaki.net/php-script-file-upload-attack-prevention
http://pgcafe.moo.jp/PHP/sec/main_11.htm
http://www.tryphp.net/phpsecurity-file/
関連記事
セッションに関するセキュリティ攻撃
https://dk521123.hatenablog.com/entry/2016/01/06/112400
インターネット層でのセキュリティ攻撃
https://dk521123.hatenablog.com/entry/2016/01/10/031335
DNSに関するセキュリティ攻撃
https://dk521123.hatenablog.com/entry/2016/01/12/115100
パス・ディレクトリに関するセキュリティ攻撃
https://dk521123.hatenablog.com/entry/2016/01/03/104400
SQL アンチパターン ~ SQL Injection(SQLインジェクション) ~
https://dk521123.hatenablog.com/entry/2016/01/09/113000
クロス・サイト・リクエスト・フォージェリ
https://dk521123.hatenablog.com/entry/2016/01/02/103500
クロス・サイト・スクリプティング
https://dk521123.hatenablog.com/entry/2016/01/01/102800