网站被黑后需立即排查Webshell:先用find命令扫描根目录下含eval、system等高危函数的PHP文件,再查$_POST/$_GET等一句话木马特征,并检查图片等非常规位置是否隐写PHP代码。

网站被黑后发现页面异常、流量突增或安全设备告警,首先要确认服务器是否已被植入Webshell木马——这类脚本通常藏在/www/wwwroot、/var/www/html等Web根目录下,通过HTTP请求即可远程执行系统命令,不及时清除会导致数据库泄露、横向渗透甚至沦为肉鸡。
快速定位可疑PHP文件
进入网站根目录,执行标准筛查命令:
find /www/wwwroot -type f -name "*.php" -print0 | xargs -0 grep -lE 'eval\(\$_|system\(\$_|assert\(\$_|exec\(|shell_exec\(|passthru\(' 2>/dev/null
这一步会列出所有含高危函数调用的PHP文件。注意:【必须加-print0和-xargs -0,否则文件名含空格或特殊符号时会漏检甚至报错】。如果返回为空,不代表安全,只是没匹配到明文特征。
再查一句话木马典型结构:
find /www/wwwroot -name "*.php" -print0 | xargs -0 grep -lE '\$_POST\[|\$_GET\[|\$_REQUEST\[' 2>/dev/null
排查非常规藏匿位置
攻击者常把木马伪装成图片、隐藏文件或带点文件名:
方法一:扫描JPG/PNG内嵌PHP代码
find /www/wwwroot -iname "*.jpg" -o -iname "*.png" -o -iname "*.gif" -print0 | xargs -0 grep -l "/dev/null
方法二:查找命名异常的PHP文件
find /www/wwwroot -name " .php" -o -name "*.php." -o -name ".php" 2>/dev/null
方法三:检查最近24小时新增的PHP文件(需先确认当前时间)
find /www/wwwroot -name "*.php" -type f -mtime -1 2>/dev/null
精准定位恶意代码行号
对上一步发现的可疑文件,逐个查看具体哪一行有问题:
第一步:提取文件路径列表存为临时文件
find /www/wwwroot -name "*.php" -print0 | xargs -0 grep -lE 'eval\(\$_|system\(\$_' > /tmp/suspicious_files.txt
第二步:遍历文件并显示行号
while read file; do echo "== $file =="; grep -nE 'eval\(\$_|system\(\$_' "$file"; done
第三步:重点检查第1行和最后一行,很多一句话木马就藏在这两处,且常以
辅助验证与交叉印证
查看Web访问日志中是否存在高频POST请求:
awk '$6 ~ /POST/ && $9 == "200" {print $1,$4,$6,$7}' /var/log/nginx/access.log | grep -E "/[a-zA-Z0-9_]{5,}\.php" | head -20
若发现类似/version2.php、/shell.php这样的短名PHP文件被频繁POST访问,基本可判定为Webshell入口。
用河马工具做二次验证(需提前下载):
wget http://down.shellpub.com/hm/latest/hm-linux-amd64.tgz && tar xvf hm-linux-amd64.tgz && ./hm scan /www/wwwroot


















