PHP文件重命名为JPG并上传到服务器威胁?

时间:2015-09-16 18:41:27

标签: php linux security ubuntu

我们有一台已经被盗用的服务器运行WordPress和Magento,并且它们在同一台服务器上的大约5个域上运行。

黑客一直在数百个位置通过所有文件系统上传恶意脚本。在这个阶段这是一场噩梦,我仍然无法找到切入点。

我注意到我们的一个AJAX图片上传字段允许我将PHP文件重命名为.jpg并将文件上传到服务器。

当我在浏览器中访问PHP .jpg文件时,会提供损坏的图像。

所以我不确定黑客是否能够在这里上传一个PHP文件并将其作为PHP文件访问,或者它是否只是将其作为一个破碎的图像提供,就像它在浏览器中为我做的那样?

关于这可能是多少安全威胁的任何想法?它可能是我的入门点,黑客获得了初始访问权限吗?或者,当我在浏览器中加载意味着它有点安全时,它作为一个破碎的图像而不是处理PHP文件的事实?

感谢任何帮助,谢谢

2 个答案:

答案 0 :(得分:2)

很难说黑客是否已经做了什么而没有实际检查那里有什么。

关于如何保护未来的图片上传,我建议使用PHP http://php.net/manual/en/function.finfo-file.php中的finfo这样的函数来查找文件是否属于任何已批准的mime类型,顺便说一句,你应该限制为只有有限类型的图像类型。

此外,你应该考虑不允许使用原始图像,而是使用它的调整版本,以避免用户最终下载巨大的图像或类似的东西。

<强>答案:
通常(取决于Web服务器配置)没有人可以执行PHP文件,如果它具有不同的扩展名,他们可以上传它,但他们无法运行它,至少在任何常见配置中。

所以,理论上你不应该担心这个特定的事情,但是要担心有人花时间试图破解你,这意味着你应该花时间保护网站和服务器。

我建议您搜索有关如何保护特定服务器和配置的文章,并确保将软件,操作系统等更新为最新的安全更新。

答案 1 :(得分:0)

能够上传具有.jpeg文件扩展名的文件,但PHP内容本身并不是一个漏洞。但是:

  1. 如果攻击者在整个文件系统上编写,你可能会有一个带有目录遍历漏洞的上传功能,需要修复,理想情况下不要让上传者选择自己的文件名;

    < / LI>
  2. 当您允许用户从与网站相同的主机名上传要提供的内容时,跨网站脚本还有其他问题;

  3. 使用类似getimagesize()之类的内容来检查上传的文件可能是值得的,以确保您拥有JPEG文件和非荒谬的维度,但考虑到“变色龙”文件可能被解释为多种不同的类型,这不一定是不透水的,所以这是一种“深度防御”措施。

  4. 让Web服务器以PHP代码的形式运行.jpeg文件可以通过以下方式实现:

    1. 能够写入服务器配置以将.jpeg与PHP处理程序相关联。通常会发生这种情况,因为另一个易受攻击的文件上载功能允许攻击者在同一目录中编写.htaccess文件供Apache选择。

    2. 带有本地文件包含安全漏洞的PHP脚本。通常这将是代码:

      包括(&#34;包括/ $变量&#34);

    3. 攻击者可以将内容导入$variable,指向something.jpeg。通常,include / require永远不应该与变量一起使用,除非这些变量明确限于少数已知良好值。

      如果您将大量恶意网页上传到您的服务器,那么另一种可能的可能性就是您的服务器登录遭到入侵。