做自由职业第五年了,大大小小的项目经手过上百个。说一个今年年初踩的坑,教训够我记一辈子。
项目背景
客户是个做外贸的小公司,预算不高,要求也不复杂:一个企业展示站,中英双语,能在线询盘就行。我报了一万二,包含设计、开发、部署、三个月维护。WordPress搭的,用了Avada主题,部署在阿里云轻量服务器上。正常流程一周搞定。
上线那天一切正常。客户在群里发了个红包,皆大欢喜。
事情发生在第三天
早上醒来看到客户发了十几条微信,全是截图——网站首页变成了一个黑色页面,上面写了一行红色的阿拉伯文。Google一搜那行字,是一个中东黑客组织留下的"签名"。
脑子嗡了一下。赶紧SSH连服务器,发现wp-content目录下多了一堆.php文件,文件名是随机字符串。再看数据库,wp_users表里多了两个管理员账号。
复盘:哪里出了问题
花了一天排查,问题出在三个地方——全是低级错误:
第一,管理员账号用户名就是"admin",密码是"admin123"。我承认这是偷懒。项目紧,想着"先把演示环境跑通,上线前再改",然后就忘了。
第二,wp-config.php里的数据库前缀是默认的wp_。这不算直接漏洞,但让自动化扫描工具更容易定位。
第三,服务器上没有装任何安全插件。Wordfence都没装。理由是"轻量服务器内存小,装插件怕慢"。省了200M内存,换来一整个站的沦陷。
攻击方式不复杂:字典爆破wp-login.php。admin/admin123这个组合,在任何一个密码字典里都是前三条。说白了不是黑客厉害,是我自己开门让人进来的。
补救和教训
当天做了这些:备份数据库和uploads目录,整个服务器重装系统,WordPress全新安装,逐条导入数据。从早上九点搞到凌晨两点。客户那边赔了三个月的免费维护,外加一顿诚恳的道歉。
从那以后,我自己定了个上线的检查清单,贴在显示器旁边:
1. 管理员账号不用admin,密码至少16位随机字符
2. 数据库前缀改成随机字符串,不碰wp_默认值
3. 必装Wordfence(免费版够用),开启登录限制
4. wp-login.php加一层HTTP Basic Auth
5. 禁用xmlrpc.php(除非真需要用)
6. 所有插件和主题保持自动更新
做这行久了容易麻木,觉得"小站没人盯上"。实际上现在的扫描工具是全自动的,不挑目标,扫到漏洞就注入。跟小偷撬门一样——不是你家特别有钱,是门没锁。
希望看到这篇文章的人别走我的老路。安全这事,真出了事才重视,代价太大了。
标签: WordPress安全 网站被黑 经验复盘 安全漏洞 站长经验
还木有评论哦,快来抢沙发吧~