代码注入内部PHP文件777权限

我醒来发现,在我的共享networking主机777权限的所有文件夹有两个新的PHP文件。 该文件内的代码无法读取 – 这里是解码版本: http : //pastie.org/779226 (什么…?)该代码甚至被注入一些PHP文件。

我不知道如何有人会这样做? 我知道拥有777权限并不是最聪明的,但是他们是如何进入我的文件夹系统的。

我只是一个客户端程序员,如果我有一些关于如何避免这种情况发生的build议,那将是非常好的。

干杯。

这里是脚本的去混淆版本: http : //pastie.org/private/iobgt7aetg8mezoepucsg

该代码似乎包括来自另一个网站的外部PHP代码,并收集有关您的访问者的信息。

发生这种情况的一种方法是,您允许从外部访问目录上的文件上载。 如果没有经过适当的validation,这样做是危险的,因为恶意用户可以上传PHP文件(使用图片上传)和恶意代码。 如果Web服务器configuration不正确,代码将在请求时运行。

为了避免这样的问题,请确保:

  • PHP进程由有限的用户运行。
  • 不需要编辑的文件只能由所有者写入(0644或0744,取决于是否需要执行位)。
  • 只能将上传目录设置为可写。
  • 尝试使用webroot之外的上传目录。 然后使用readfile()来提供文件。
  • validation文件。 如果你只想让你的表单允许图像,validation魔术比特,并确保图像是有效的。 这是一个非常被忽视的步骤。 同样适用于任何其他格式。 不要依赖客户端发送的文件扩展名或mimetype。 检查实际的文件内容。

至less有两种可能性我可以想到:

  1. 他们find了你的FTP密码
  2. 他们发现你的PHP软件存在缺陷

为了防止它们发生:

  1. 使用复杂的密码(最less9个字符,混合大小写,数字和特殊字符)
  2. 从777跑,好像是兽的数字; 尝试给予networking服务器超过您的脚本的读取权限,并给它(必须写)的(希望是罕见的)文件夹/文件的特殊权限。

如果您可以访问某些日志(来自Apache的访问日志以及您的网站运行的任何FTP服务器的FTP日志),那么可以看到发生了什么情况。

可疑的是,他们设法做了很多改变,只是在脚本中有一个简单的缺陷,除非它是一个非常广泛的缺陷(就像你有一个不受保护的脚本只包含fopen()而不pipe用户喜欢什么),所以我会检查FTPlogin优先。