インクルード攻撃

※動作テストは自己責任で必ず自分の環境で確認すること。

インクルード攻撃とは

サーバーを攻撃する手法の一つ。PHPやPerlなどスクリプト言語で作成されたWebアプリケーションの脆弱性をつき、外部の端末から攻撃用コードをWebページに挿入する事で、そのページを格納しているWebサーバへ攻撃を行う手法。

攻撃者は、外部から情報を読み出すインクルード処理における変数領域を利用し、任意のデータを渡すための悪意のURLをWebサーバに読み込ませる。
そのURLを読み込んだサーバは、攻撃者側が管理するサーバへ情報を取りに行く。
結果として、攻撃用のコードがターゲットのWebサーバ上で実行される仕組み。

攻撃者は悪意のあるコードをWebサーバに送るだけで、個人情報を盗み出したり、情報の改竄を行ったりすることが可能となる。
また、RFI攻撃はスパムメールの送信やDos攻撃を仕掛けるためのボットを外部からWbサーバに仕掛ける手法としても利用される。

RFI攻撃の対策には、外部ファイルを読みこませる関数に与える文字列を検査して、必要のない文字列を排除したり、不特定URKからリモートファイルを読み込ませないように設定ファイルを変更したりすることなどが必要となる。

サイト外のファイルをPHPコードとして実行させる攻撃(リモートファイル・インクルード攻撃)
サイト内の想定外のファイルを読み込ませる攻撃(ローカルファイル・インクルード攻撃)

■攻撃先

制御構造:include、include_once、require、require_once

■被害

あらゆるPHPコードを実行可能(リモートファイル・インクルード攻撃)
ローカルアタック対策が弱いサーバであれば、root権限まで奪取される可能性
サーバ内の任意のファイル内容が読み出される(ローカルファイル・インクルード攻撃)

Case 1

<?php
include $_GET['file_name'];
include $_GET['file_name'].'dat';
include '/home/mydata/'.$_GET['file_name'];
?>
$_GET['file_name']を通じて任意のURIやPHPを読み込ませる。

対策方法

allow_url_fopenをoff

・php.iniへの記述

<?php
allow_url_fopen = off
?>

・httpd.confへの設定

<Directory /home/mydata/>
  php_admin_flag_allow_url_fopen off
</Directory>

・ブラックリスト法

<?php
include basename($_GET['fila_name']);
?>

・ホワイトリスト法

開いて良いファイルを予め配列にしておき、その配列になければ処理を中断。
<?php
if(!in_array($_GET['file_name'], (許可ファイル名の配列)))
{
  exit;
}
include $_GET['file_name'];
?>

PHPサイバーテロの技法―攻撃と防御の実際

新品価格
¥1,890から
(2013/10/3 19:55時点)

Comments are closed.