确认被入侵后第一件事是立即隔离服务器网络,断开外网保留内网连通性以防横向移动或数据外泄;随后快速定位webshell、排查隐藏账号与启动项、验证MySQL用户权限是否被滥用,并警惕内存驻留型后门等无痕持久化行为。
确认被入侵后,第一件事不是删日志、不是重启服务,而是立即隔离服务器网络——断开外网,保留内网连通性,防止横向移动或数据外泄。
快速定位 webshell 文件位置
攻击者大概率通过 phpMyAdmin 的 import 功能或 general_log 写入一句话木马,常见路径包括:C:\phpStudy\www\shell.php、/var/www/html/shell.php、/tmp/phpXXXXXX(临时文件)。
- 用
find或dir /s搜索含eval、system、$_POST、$_GET的 PHP 文件,但别只依赖字符串匹配——混淆写法(如base64_decode+ 拼接)会漏掉 - 重点检查
general_log_file路径:在phpMyAdmin中执行SHOW VARIABLES LIKE '%general%';,看general_log_file是否被篡改成 Web 可访问路径 - 查
access.log里高频访问的异常 PHP 文件,尤其带?cmd=、?a=system这类参数的请求
排查隐藏账号与启动项
webshell 往往只是入口,后续会创建持久化后门。Windows 下必须查注册表和用户账户,Linux 下要查 /etc/passwd 和 crontab。
- Windows:运行
regedit,跳转到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,找可疑的.vbs、.bat或空格绕过命名的启动项 - Windows:用
net user列出所有账户,注意用户名末尾带空格、或看似系统账户但 SID 不匹配的(如admin或Guest123) - Linux:执行
awk -F: '$3 == 0 {print $1}' /etc/passwd查 root 权限账户;crontab -l和ls /etc/cron.d/看是否有异常定时任务
验证 mysql 用户权限是否被滥用
攻击者常利用高权限 MySQL 账户执行系统命令或读写文件,不能只改密码,得清理授权。
- 登录 MySQL 后执行
SELECT user,host,account_locked FROM mysql.user;,确认是否有非运维人员账户且account_locked='Y'—— 这可能是被攻击者故意锁住的障眼法 - 执行
SHOW GRANTS FOR 'root'@'%';,如果看到FILE权限(允许INTO OUTFILE),立刻回收:REVOKE FILE ON *.* FROM 'root'@'%'; - 检查
secure_file_priv值:SHOW VARIABLES LIKE 'secure_file_priv';,若为NULL或空,说明可任意写文件,必须设为具体目录并重启 MySQL
真正难处理的不是删 shell,而是那些没留下日志痕迹的内存驻留型后门、或修改了 PHP 扩展(如 php.ini 加载恶意 .so 文件)的行为——这些往往需要比对干净镜像的二进制哈希,或重装基础环境才稳妥。
立即学习“PHP免费学习笔记(深入)”;



















