PHPでは、リモートファイルのインクルードは、$_GET
,$_POST
、$_COOKIE
からの入力で行うことができます。私はそれが不可能であることを知っていますが、(任意のチャンスによって)$_SERVER
から出てくる値を偽造することは可能ですか?
私は、$_SERVER
がまれにリモートファイルのインクルードのソースになることを意味しますか?
PHPでは、リモートファイルのインクルードは、$_GET
,$_POST
、$_COOKIE
からの入力で行うことができます。私はそれが不可能であることを知っていますが、(任意のチャンスによって)$_SERVER
から出てくる値を偽造することは可能ですか?
私は、$_SERVER
がまれにリモートファイルのインクルードのソースになることを意味しますか?
$ _SERVER要求をアクセスするために使用されるパスの情報を含む配列である、ヘッダー等
値の数を直接設定し、操作ユーザにより(例えばQUERY_STRINGとして)ので、潜在的に脆弱であるれています$ _GETと$ _POSTとまったく同じ方法です。それはあなた自身のコードでこれらの値をどのように使用するかによって異なります。
偽造したくない特定のインデックス$ _SERVERをお持ちでしたか?
私はDOCUMENT_ROOTなどのサーバー定義値に焦点を当てていますが、 SERVER_NAME、PHP_SELFなどです。これらは、 'include'のためのローカルPHPファイルの場所を特定するために使用できます。 – Googlebot
PHP_SELFは確かに信頼されていません。それをエコーしてそれを要求するファイルを作成してみてください。 "domain.com/phpselfecho.php/anyrandompieceoftext" SCRIPT_NAMEを使用する方がはるかに良いです。 –
@Nick Downton:XSSの脆弱性 – symcbean
はい、$ _SERVERの値の一部を操作することは可能です。
しかし、LFIは、攻撃者が実行するコードへの参照を注入することに依存していますとそのコードを実行するにはPHPを入手してください。リクエストごとに送信されるURL以外のもの(静的なサイトを実行している)以外のものをすべて無視する場合を除き、変数によって参照されるコードの呼び出し方法に焦点を当てるより多くのメリットが得られます。
[どの$ _SERVER変数が安全ですか](0120-18753-1) – rook