ホームページ >バックエンド開発 >PHPチュートリアル >allow_url_include_PHPチュートリアルの応用と説明

allow_url_include_PHPチュートリアルの応用と説明

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-07-21 14:53:061383ブラウズ

PHP は、URL のインポートやステートメントの実行を許可する可能性があるため、よく批判されます。実際、これは、リモート URL インクルード脆弱性と呼ばれる PHP アプリケーションの脆弱性の最も重要な原因の 1 つであるため、それほど驚くべきことではありません。

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

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

このため、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 と ftp に影響しますが、php や date (php5.2.0 の新機能) の URL には影響しません。 PHP コードの挿入は非常に簡単です。

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

<?php
// 安全でないインクルード
// 次の Include ステートメントは
// POSTされたものをすべて含めて実行します
// サーバーへ

「php://input」を含めます。 ?>
例 2: データを使用: 任意のコードを含める

<?php
// 安全でないインクルード
// 次の Include ステートメントは
// Base64 でエンコードされたものを含めて実行します
// ここではペイロードです phpinfo()

「data:;base64,PD9waHAgcGhwaW5mbygpOz8+」を含めます
?>
これを計算に入れると、url_allow_fopen も url_allor_include も保証されていないことが非常に明白になります。これらは、単にフィルターがベクトルをフィルター処理することがほとんどないためです。この URL に含まれる脆弱性に対する 100% の解決策は、Suhosin 拡張機能です。

http://www.bkjia.com/PHPjc/371468.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/371468.html技術記事 PHP は、URL のインポートとステートメントの実行を許可していることでよく批判されます。実際、これはリモート URL インクルード脆弱性と呼ばれるものなので、それほど驚くべきことではありません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。