ホームページ > php教程 > php手册 > PHP コード実行の脆弱性リファレンスの概要

PHP コード実行の脆弱性リファレンスの概要

WBOY
リリース: 2016-06-21 08:52:23
オリジナル
834 人が閲覧しました

1. コード実行関数

コードを実行できる PHP の関数。 eval()、assert()、``、system()、exec()、shell_exec()、passthru()、escapeshellcmd()、pcntl_exec() など

デモコード 1.1:

コードインジェクションを含む 2 つのファイル

このファイルには、include()、include_once()、require()、require_once() などの特定の条件下での関数のコード インジェクションが含まれています。

allow_url_include=On および PHP Version>=5.2.0 の場合、コード インジェクションが発生します。

デモコード 2.1:

http://127.0.0.1/include.php?a=data:text/plain,%3C?php%20phpinfo%28%29;?%3E、つまり

にアクセスしてください。

phpinfo()を実行します。

3 つの通常のマッチング コードの挿入

よく知られている preg_replace() 関数はコード インジェクションを引き起こします。 /e モード修飾子がパターンに存在する場合、コードの実行が許可されます。ここでは 3 つの状況に分けて説明します

3.1 preg_replace() パターンパラメータの注入

パターンは、最初のパラメーターのコード インジェクションです。

magic_quotes_gpc=Off の場合、コードが実行されます。

デモコード 3.1:

http://127.0.0.1/preg_replace1.php?reg=%3C/php%3E/e (

) にアクセスしてください。

phpinfo()を実行します。

3.2 preg_replace() 置換パラメータの挿入

置換とは、2 番目のパラメーターのコード インジェクションであり、コードが実行されます。

デモコード 3.2:

http://127.0.0.1/preg_replace2.php?h=phpinfo() を送信すると、

になります。

phpinfo()を実行します。

3.3 preg_replace()

の 3 番目のパラメーターの挿入

subject パラメータを構築してコードを実行します。送信: http://127.0.0.1/preg_replace3.php?h=

phpinfo()

または http://127.0.0.1/preg_replace3.php?h=

${phpinfo%28%29}

原因コードの実行

デモコード 3.3:

4 つの動的コード実行

4.1 動的変数コードの実行

デモコード 4.1:

http://127.0.0.1/dyn_func.php?dyn_func=system&argument=ipconfig を送信し、ipconfig コマンドを実行します

4.2 関数コードの動的実行

デモコード 4.2:

http://127.0.0.1/create_function.php?foobar=system%28dir%29 を送信し、dir コマンド

を実行します。

他 5 名

5.1 ob_start()関数のコード実行

デモコード 5.1:

5.2 array_map()関数のコード実行

デモコード 5.2:

http://127.0.0.1/array_map.php?callback=phpinfo を送信し、phpinfo() を実行します。

5.3 unserialize() と eval()

Unserialize() は、PHP で非常に頻繁に使用される関数です。 unserialize() を不適切に使用すると、簡単にセキュリティ リスクが発生する可能性があります。

http://127.0.0.1/unserialize.php?saved_code=O:7:%22Example%22:1:{s:3:%22var%22;s:10:%22phpinfo%28%29;%22 を送信します。 ;} つまり、phpinfo()を実行します。

5.4 セキュリティ上の問題を引き起こしやすい機能

同じタイプの関数が他にもたくさんあります

array_map()

usort()、uasort()、uksort()

array_filter()

array_reduce()

array_diff_uassoc()、array_diff_ukey()

array_udiff()、array_udiff_assoc()、array_udiff_uassoc()

array_intersect_assoc()、array_intersect_uassoc()

array_uintersect()、array_uintersect_assoc()、array_uintersect_uassoc()

array_walk()、array_walk_recursive()

xml_set_character_data_handler()

xml_set_default_handler()

xml_set_element_handler()

xml_set_end_namespace_decl_handler()

xml_set_external_entity_ref_handler()

xml_set_notation_decl_handler()

xml_set_processing_instruction_handler()

xml_set_start_namespace_decl_handler()

xml_set_unparsed_entity_decl_handler()

stream_filter_register()

set_error_handler()

register_shutdown_function()

register_tick_function()



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート