网页挂马这件事,删了又冒出来,是很多人最崩溃的地方。后台清干净了、恶意代码也搜出来删了,隔两天打开首页又开始跳。这时候还盯着代码找原因,方向就偏了——问题多半不在程序里,在服务器权限上。木马能反复重生,是因为它有地方可以躺着,有账号可以借力,而这些东西都是权限给它的。

网页挂马的根子在权限,不在那段代码
说句实在话,大部分挂马的手法本身很粗糙:往 index.php 或者 wp-config.php 尾部追加一段混淆脚本、在图片目录里塞个伪装成 jpg 的 php 文件、往模板的 footer 里插一段外链。手法粗糙,但为什么能写进去?因为那个目录对 web 用户是可写的。程序要跑就得有点写权限,上传、缓存、日志,这些是正常需求;问题是你没法区分哪个写请求是自己人发的,哪个是脚本塞进来的。
所以清理的正确顺序是反过来的:先收权限,再删文件。顺序颠倒的话,你前脚删完,后脚它就再生成一次,你还会以为是没删干净。
该收的几处权限,从哪查起
先说目录。网站根目录里,除了缓存目录、上传目录和运行必需的临时目录,其他位置都不该让 web 用户写。特别是网站根目录本身、配置文件目录、模板目录,这三处写权限一开就是给挂马铺路。很多面板默认会给上 755 甚至 777,自己动手看一眼再决定。
然后是账号。web 服务进程用哪个账号跑,这个账号在系统里是什么角色,有没有 sudo,能不能读别的站点目录。如果同一台机器上放了好几个站,而且都用同一个高权限账号跑,那一个站中招,其它站就等于陪着一起暴露。能分开就分开,跑起来的那部分收窄到够用就行。
还有定时任务和启动项。这个最容易被忽略。挂马的人往里扔一条 crontab,每隔一段时间把文件还原回来,你在白天删得再干净也没用。crontab -l 看一眼,/etc/cron.d 里翻一翻,systemd 里那些名字陌生、指向 /tmp 的服务单元,都值得停一下。
权限之外还得看一眼的几个入口
权限是地基,但光收权限不等于安全。常见的写入入口有这么几个:老版本插件、上传功能没校验类型、后台弱口令、数据库账号权限过大能执行到文件。这几个不堵,就算目录收紧,攻击者也能通过别的方式进来再找机会。
还有一类容易漏的:FTP 或者面板账号被人拿了。这类账号权限往往比 web 用户大得多,一旦泄露,对方想放什么就放什么,跟服务器权限收紧没多大关系。所以账号密码、登录 IP 白名单这些老生常谈的事,还是得做。
清理的手法,别急着上工具
如果站点已经中招了,先做个快照或者完整备份留底,然后再动手。这不是多余动作,万一清到一半发现结构被破坏,还能拉回来。备份这一步做完,再去收权限、删可疑文件、替换被改的核心文件、改所有能改的密码。
查文件的话,按时间找比按名字找靠谱。找最近修改过的文件,尤其是那些修改时间集中在你确定没动过站的时段,可疑度很高。另外,被挂马的文件里经常能看到 base64_decode、eval、gzinflate 这类拼接写法,搜一下看看能翻出多少。
最后别忘了搜索控制台的提示,如果搜索引擎已经把站点标记成有风险,光修好服务器还不够,得去申诉、说明已清理,这个流程按照服务商或官方页面的说明走,别凭自己的印象填。
收权限之后,日常怎么守住
能防住的,往往是那些不起眼的习惯。比如:web 用户绝不给写权限到网站根目录;上传目录和程序目录物理隔开;后台改名加上登录失败锁定;插件和程序定期升级;每台机器都留一份检查清单,出问题时照着查一遍,别靠记忆。
还有一点,别让同一台机器上的站点互相信任。站点之间目录可见、账号共用,本质上是把风险绑在一起。资源够的话,重要站点单独放,这个投入比事后来修划算得多。
网页挂马反复清不掉,通常只有两个原因:一是有地方能重新写入,二是有账号能重新登进来。这两件事都归到权限上。下次遇到,先别急着搜恶意代码,先把目录写权限、运行账号、定时任务这三样看一遍,多半就能找到答案。
【版权声明】:本站内容若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!