Heim  >  Artikel  >  Backend-Entwicklung  >  Zusammenfassung der Schwachstellen bei der Ausführung von PHP-Code

Zusammenfassung der Schwachstellen bei der Ausführung von PHP-Code

不言
不言Original
2018-04-24 09:49:595918Durchsuche

Der in diesem Artikel vorgestellte Inhalt ist eine Zusammenfassung der Schwachstellen bei der Ausführung von PHP-Code, die einen gewissen Referenzwert haben. Jetzt kann ich sie mit allen Freunden teilen, die sie brauchen.

Zusammenfassung der Schwachstellen bei der Ausführung von PHP-Code


Ref: http://blog.csdn.net/kuangmang/article/details/27170309
Ref: http://blog.csdn.net/fuckcat_2333 /article/details /52125951

1 Codeausführungsfunktion

Die Funktionen in PHP, die Code ausführen können, sind: eval(), Assert(), ``, System(), Exec() , shell_exec(), Wenn die Parameter (teilweise) in passhru(), pcntl_exec()
diese Funktionen steuerbar sind, können Sicherheitslücken bei der Befehlsinjektion auftreten. Escapeshellarg wird normalerweise zum Verarbeiten von Parametern verwendet. Diese Funktion weist jedoch in der niedrigeren Version der PHP-Bibliotheksfunktion eine Sicherheitslücke auf (Grund: Backslashes werden unter Windows nicht gefiltert), sodass Sie darauf achten müssen.

2 Datei-Include-Code-Injection

Wenn Eingabevariablen in Datei-Include-Funktionen eingebunden werden (include, include_once, require, require_once), kann es zu einer Code-Injection kommen.
Bedingungen:allow_url_include=Ein, PHP-Version>=5.2.0
Democode:

<?phpinclude($_GET[&#39;a&#39;]);?>

Besuchen Sie http://127.0.0.1/demo.php?a=data:text/ plain,%3C?php%20phpinfo%28%29;?%3E, phpinfo() wird ausgeführt.

3 Injektion von regulärem Ausdruckscode

preg_replace()-Funktion:
Wenn der /e-Modusmodifikator im Muster vorhanden ist und übereinstimmt, darf der ersetzende Code ausgeführt werden.

3.1 第一个(pattern)参数注入

条件:magic_quotes_gpc=Off,pattern参数中注入/e选项;
demo code:

<?phpecho $regexp = $_GET[&#39;reg&#39;];
$var = &#39;<php>phpinfo()</php>';
preg_replace("/<php>(.*?)$regexp", '\\1', $var);?>

访问http://127.0.0.1/preg_replace1.php?reg=%3C/php%3E/e
即会执行phpinfo()

3.2 第二个人(replacement)参数注入

条件:pattern参数中带/e

<?phppreg_replace("/testxxx/e",$_GET[&#39;h&#39;],"jutst test testxxx!");?>

提交 http://127.0.0.1/demo2.php?h=phpinfo()时, 即 执行phpinfo()。

3.3 第三个参数注射

4 动态代码执行

4.1 动态变量代码执行

<?php$dyn_func = $_GET[&#39;dyn_func&#39;];
$argument = $_GET[&#39;argument&#39;];
$dyn_func($argument);?>

当http://127.0.0.1/dyn_func.php?dyn_func=system&argument=ipconfig时,执行ipconfig命令

4.2 动态函数代码执行

关键函数:create_function
demo code:

<?php$foobar = $_GET[&#39;foobar&#39;];$dyn_func = create_function(&#39;$foobar&#39;, "echo $foobar;");$dyn_func(&#39;&#39;);?>

当提交http://127.0.0.1/create_function.php?foobar=system%28dir%29时,执行dir命令

5 其他

array_map()函数
ob_start()函数???
函数处理函数:http://www.php.net/manual/zh/book.funchand.php

相关推荐:

PHP执行程序php.exe参数解析

Das obige ist der detaillierte Inhalt vonZusammenfassung der Schwachstellen bei der Ausführung von PHP-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn