2012-01-10 33 views
3

PHPでは、リモートファイルのインクルードは、$_GET,$_POST$_COOKIEからの入力で行うことができます。私はそれが不可能であることを知っていますが、(任意のチャンスによって)$_SERVERから出てくる値を偽造することは可能ですか?

私は、$_SERVERがまれにリモートファイルのインクルードのソースになることを意味しますか?

+0

[どの$ _SERVER変数が安全ですか](0120-18753-1) – rook

答えて

3

$ _SERVER要求をアクセスするために使用されるパスの情報を含む配列である、ヘッダー等

値の数を直接設定し、操作ユーザにより(例えばQUERY_STRINGとして)ので、潜在的に脆弱であるれています$ _GETと$ _POSTとまったく同じ方法です。それはあなた自身のコードでこれらの値をどのように使用するかによって異なります。

偽造したくない特定のインデックス$ _SERVERをお持ちでしたか?

+0

私はDOCUMENT_ROOTなどのサーバー定義値に焦点を当てていますが、 SERVER_NAME、PHP_SELFなどです。これらは、 'include'のためのローカルPHPファイルの場所を特定するために使用できます。 – Googlebot

+0

PHP_SELFは確かに信頼されていません。それをエコーし​​てそれを要求するファイルを作成してみてください。 "domain.com/phpselfecho.php/anyrandompieceoftext" SCRIPT_NAMEを使用する方がはるかに良いです。 –

+0

@Nick Downton:XSSの脆弱性 – symcbean

1

はい、$ _SERVERの値の一部を操作することは可能です。

しかし、LFIは、攻撃者が実行するコードへの参照を注入することに依存していますそのコードを実行するにはPHPを入手してください。リクエストごとに送信されるURL以外のもの(静的なサイトを実行している)以外のものをすべて無視する場合を除き、変数によって参照されるコードの呼び出し方法に焦点を当てるより多くのメリットが得られます。

関連する問題