|
一个做外贸的网站朋友上周找我,说网站被Google标了"此站点可能被入侵"。漏洞他慌了,排查因为询盘量直接掉了六成。网站我让他把FTP权限给我,漏洞登进去一看,排查根目录多了个google.php,网站内容就一行混淆过的漏洞代码。典型的排查webshell——攻击者留的后门,用来随时回来控制服务器。网站 这种事太常见了。漏洞网站漏洞排查,排查很多人以为就是网站装个安全插件、扫一遍完事。漏洞实际远不止。排查我经手过的案例里,大部分问题出在最基础的地方,而且往往被忽略。 先看文件。攻击者进来之后一定会留东西——webshell、木马、跳转代码。排查时我会重点翻这几个目录:上传目录、缓存目录、根目录。文件名也有规律,常见的有1.php、shell.php、adminer.php,或者伪装成图片的logo.php.jpg。有个技巧是搜最近修改的文件,正常运营的网站不会频繁改动核心文件。Linux下一条命令就能筛出来:find /var/www -mtime -7 -type f,七天内的改动一目了然。 数据库也得查。有次帮一个客户排查,前台看着正常,但后台用户表里多了一个admin2账号,权限拉满。攻击者通过SQL注入写进去的。查数据库要盯几个点:异常的管理员账号、wp_options(WordPress站点)里被篡改的siteurl、文章内容里插入的加密脚本。别只看表面,有些后门藏在序列化数据里,肉眼根本看不出来。 日志是另一个关键。很多人不看日志,觉得量大麻烦。但日志里藏着攻击路径。我习惯先看访问日志里的POST请求,尤其是那些返回200状态码的。攻击者提交webshell的时候,POST请求体里通常有特征字符串,比如eval、base64_decode、system。还有404日志——扫描器留下的痕迹。如果短时间内大量404集中在/wp-admin/、/.env、/phpmyadmin/这些路径,说明有人在踩点。 权限配置经常被忽视。我见过太多站点,所有目录都是777。PHP文件根本不需要执行权限,给644就够了。上传目录更要锁死,禁止执行PHP。Nginx里加一行location ~* /uploads/.*\.php$ { deny all; },能挡掉一大半上传漏洞的攻击。还有数据库用户,别用root连网站,单独建个只对特定库有增删改查权限的账号。 说个真实案例。去年一个客户网站被挂马,跳转到博彩页面。我查了两天没找到问题,文件、数据库、日志都翻了。最后发现是.htaccess里加了一条Rewrite规则,把所有移动端UA的请求重定向到外部。这个文件平时没人看,攻击者就利用这点。所以排查要覆盖所有角落,包括配置文件、robots.txt、甚至favicon.ico。 工具方面,我常用几个:D盾查webshell,河马扫后门,chkrootkit看系统层。但工具不是万能的,误报漏报都有。最终还得靠人看代码。有次D盾报了一个文件,我打开一看是正常的统计代码,只是用了eval做模板解析。反过来,有些后门写得很干净,工具根本不报,得靠经验判断。 排查完要做的第一件事是改密码——所有密码。数据库、FTP、SSH、后台管理员,一个不落。然后打补丁。很多漏洞都是已知的,CMS版本太老,插件没更新。攻击者不挑食,有洞就钻。最后加一层WAF,云厂商的或者开源的都行,能挡掉大部分自动化扫描。 日常维护比事后补救重要。我给自己管的几个站定了规矩:每周看一次日志,每月扫一次文件,每季度做一次完整备份。备份要离线存,别放同一台服务器上。有次一个客户服务器被格了,备份也在上面,数据全没。教训。 网站安全没有一劳永逸。攻击技术在变,排查手段也得跟着更新。但核心逻辑不变:找到异常,堵住入口,清理后门,加固配置。这四步走完,基本能睡个安稳觉。 |