web-dev-qa-db-ja.com

PHP 5.4.4+)でLFI攻撃は可能ですか(拡張機能を削除します)?

ファイル拡張子を削除するLFI攻撃に対して、まだ攻撃の可能性があるかどうか疑問に思います。明らかに、nullバイトは以前のPHP=バージョンで修正されており、ファイルの切り捨てとともに機能しなくなりました。

明確にするために、PHP 5.4.4+)でこのコードを使用して/etc/passwdを読み取る方法は、最悪の場合のサーバー側の設定を想定していますか。

include( $_GET['page'] . '.php' );
4
Peleus

これで誰かが_/etc/passwd_を直接含めることができるとは思いませんが、これにはまだ多くの問題があります。攻撃者は次のことができる可能性があります。

  • ファイル自体を含めることにより、DoSをトリガーします。 (include_onceではなくincludeを使用しているため、同じファイルが再帰的に含まれ続けます。)
  • Phpinfoのコピーや機密情報の漏洩など、システムに任意のスクリプトを含めます。
  • ユーザー定義の拡張子を持つファイルをアップロードできる場合は、任意のコードを含めます。

Php.iniにallow_url_include = 1が含まれている場合は、リモートファイルインクルードの脆弱性が生じていることに注意してください。

より良い方法は、ページをホワイトリストに登録するか、少なくともbasename()realpath() + dirname()などを使用して、ディレクトリトラバーサル攻撃を防ぐことです。

5
David