原创 | PHP代码执行漏洞函数详解

admin 2024年6月27日01:17:07评论68 views字数 2142阅读7分8秒阅读模式

PHP提供代码执行漏洞是方便开发人员处理各类数据和各种业务场景,但是在开发人员不能合理使用的时候,就会产生安全风险,则很容易被攻击者利用执行远程的PHP恶意代码,威胁到系统安全。

PHP代码里包含eval()、assert()、preg_repace()、create_function()等能够执行代码的函数,如果没有对用户输入的参数进行过滤,就会造册会给你代码执行漏洞,导致攻击者在服务器端执行代码,进而控制整个服务器。

代码执行的函数

浪师父通过列举eval()、assert()、preg_repace()、create_function()等常用函数来说明其中存在的安全隐患。

1 危险的eval()函数

eval()函数可以吧字符串代码作为PHP代码执行。eval()函数语言结构非常危险,因为它允许执行任意PHP代码。如果想使用,必须多加注意,不要允许传入任何由用户提供的未经完整验证的数据。

eval()函数可以将参数的变量值执行,可以用于处理模板和动态加载PHP代码,所以容易被利用攻击。下面代码就是PHP一句话木马。

<?php eval($_GET[cmd]) ?>

代码成功执行phpinfo()函数,执行结果如图。

https://www.xxx.com/cmd.php?cmd=phpinfo();

原创 | PHP代码执行漏洞函数详解

2 危险的assert()函数

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

<?php assert($_GET[cmd]) ?>

服务器存在上诉代码,当请求https://www.xxx.com/assert.php?cmd=phpinfo();后执行phpinfo()函数被执行。如图:

原创 | PHP代码执行漏洞函数详解

3 危险的preg_replace()函数

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

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

当请求https://www.xxx.com/preg_replace.php?cmd=phpinfo();后phpinf()函数被执行。如图:

原创 | PHP代码执行漏洞函数详解

4 危险的create_function()函数

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

如下代码是该函数引起的代码执行漏洞。

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

请求https://www.xxx.com/create_function.php?cmd=;}phpinfo();/*后phpinfo()会在没有调用函数的情况下执行。

原创 | PHP代码执行漏洞函数详解

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

assert() array_filter() pcntl_exec()
preg_reploace() array_map() require()
array_reduce() array_diff_uassoc() array_diff_ukey()
array_udiff() array_udiff_assoc() require_once()
register_shutdown_function() register_tick_function() set_error_handler()
shell_exec() array_udiff_uassoc() array_intersect_assoc()
array_intersect_uassoc() array_uintersect() array_uintersect_assoc()
array_uintersect_uassoc() array_walk() array_walk_recursive()
create_function() escapeshellcmd() exec()
include include_once() ob_start()
passthru() stream_filter_register() system()
usort() uasort() uksort()
xml_set_character_data_handler() 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

原文始发于微信公众号(船山信安):原创 | PHP代码执行漏洞函数详解

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月27日01:17:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   原创 | PHP代码执行漏洞函数详解https://cn-sec.com/archives/2889631.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息