phpのallow_url_includeの応用と説明

WBOY
リリース: 2016-06-13 12:17:01
オリジナル
1685 人が閲覧しました

このため、多くのセキュリティ研究者は、php.ini 設定でのallow_url_fopen へのポイントを無効にすることを推奨しています。残念ながら、このアプローチを推奨する人の多くは、これにより多くのアプリケーションが破損すること、およびリモート URL のインクルードとそれによってもたらされるセキュリティ上の不安を 100% 保証するものではないことを認識していません。

多くの場合、ユーザーは、PHP で URL の組み込みの無効化を許可するように要求し、他のファイル システム関数を使用するときに宣言のサポートを要求します。

このため、allow_url_include は PHP6 で利用可能になる予定です。これらの議論の後、これらの機能は php5.2.0 にバックポートされました。現在、ほとんどのセキュリティ研究者はアドバイスを変更し、allow_url_include を無効にすることのみを人々にアドバイスしています。

残念ながら、allow_url_fopen とallow_url_include は問題の原因ではありません。一方で、攻撃者はセッションデータ、ファイルアップロード、ログファイルなどを通じて PHP コードを入手することが多いため、アプリケーションにローカル ファイルを含めることは依然として十分に危険です。

一方、allow_url_fopen とallow_url_include は、URL としてマークされた URL ハンドルのみを保護します。これは http(s) と ftp(s) に影響しますが、php や date (php5.2.0 の新機能) の URL には影響しません。 PHP コードインジェクションは非常に簡単に実行できます。

例 1: php://input を使用して POST データを読み取る

// 安全でない Include
// 次の Include ステートメントは
// POST されたものをすべてインクルードして実行します
>// サーバーへ
<?php
// Insecure Include
// The following Include statement will
// include and execute everything POSTed
// to the server

include "php://input";
?>
include "php://input"
?>

例 2: データの使用: 任意のコードを含める

<?php
// Insecure Include
// The following Include statement will
// include and execute the base64 encoded
// payload. Here this is just phpinfo()

include "data:;base64,PD9waHAgcGhwaW5mbygpOz8 ";
?>
// 安全でない Include
// 次の Include ステートメントは
// Base64 でエンコードされた // ペイロードは単なる phpinfo()

include "data:;base64,PD9waHAgcGhwaW5mbygpOz8 ";
?>

これを計算に入れると、url_allow_fopen も url_allor_include も保証されていないことが非常に明白になります。これらは、単にフィルターがベクトルをフィルター処理することがほとんどないためです。この URL に含まれる脆弱性に対する 100% の解決策は、Suhosin 拡張機能 です。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート