最近有同事突然报告说网站管理后台无法登录了,检查了一圈才发现网站被攻击了,攻击者在项目中上传了一些后门文件,并修改了数据库的连接配置信息。
要不是因为数据库配置被修改,导致无法登录,还真的不一定能被发现。
于是紧急修复了下,删除了后门文件,恢复了数据库配置,暂时算是解决了问题,估计这期间登陆的用户资料肯定是泄漏了,不过好在没有更严重的损失。
以下是我这次排查和处理的步骤,分享给大家参考一下:
一、查最近新增文件
通常被攻击后会有一些新的文件被上传或者修改,尤其是一些后门文件或者恶意脚本。
可以通过查找最近7天内修改过的文件来排查:
find /网站目录 -type f -mtime -7
或者:
find /网站目录 -type f | grep -E '\.(php|phtml|ico)$'
重点排查这些目录:
- uploads
- cache
- tmp
- runtime
- storage
- public
有些文件一看就不是项目中有的,就需要留意了。
二、搜索危险函数
PHP项目中,有一些函数经常被攻击者用来执行恶意代码,正常情况下不应该频繁出现。
可以搜索这些敏感的函数来排查:
grep -R "base64_decode" /网站目录
grep -R "eval(" /网站目录
grep -R "shell_exec" /网站目录
grep -R "assert(" /网站目录
三、查异常定时任务
为了持久化攻击,攻击者可能会设置一些定时任务来定期执行恶意代码,可以通过查看当前用户和root用户的crontab来排查:
crontab -l
sudo crontab -l
ls -al /etc/cron*
四、查可疑进程
为了排查是否有异常进程在运行,可以使用以下命令查看当前系统的进程:
ps auxf
重点看:
- curl
- wget
- bash
- python
- perl
是否有异常联网。
结语
说实话,以上方法只能大概看下是否有被攻击的痕迹,以及简单的处理。
不过也不要把这些攻击者想的多厉害,大部分也就是利用漏洞上传一些后门文件,或者修改一些文件来执行恶意代码。
平时做好安全防护,及时更新系统和应用的补丁,定期备份数据,才是最重要的。
备份!备份!备份!!

