当前位置:智汇导航 » 站长资讯 » 资讯文章 » 站长新闻 » 文章详细 订阅RssFeed

昨晚折腾到三点,差点被一个老漏洞把站给端了

来源:本站原创 浏览:661次 时间:2026-10-21

昨晚差点没背过气去。刚准备躺下,手机监控告警响个不停。爬起来一看,网站根目录多了个从来没见过的cache目录,里面塞满了乱七八糟的php文件。

第一反应:完了,被日了。

说实话,干站长这么多年,这种场面见多了,但每次遇到还是脑瓜子嗡嗡的。赶紧连上SSH,ls -la了一下,果然,多了几个名字像乱码一样的文件。顺手看了下/var/log/nginx/access.log,好家伙,有个IP一直在疯狂POST /wp-content/plugins/old-plugin/readme.php。这个插件我他妈都忘了还在服务器上躺着,2014年的老玩意儿,早就不维护了,居然被扫出来一个文件包含漏洞。

那会儿手都是抖的,别笑,真的。因为最近偷懒,数据库上次全量备份还是两周前。要是被拖库,这两周的外链和投稿全打水漂。

赶紧先不管三七二十一,chmod -R 000 /var/www/html,把整站先锁死,谁也别想读。然后去看那个插件的目录,发现里面被塞了个shell.php,内容做了混淆,eval那套。打开一看,直接连的某云存储桶,估计是想把我数据库导出。

安全

坑爹的是,这插件是当年找外包做的功能,早就不用但没删。你说这事怪谁?怪自己手贱呗。我赶紧用rsync -avz /backup/db_20240501.sql.gz 把两周前的备份先拉到本地,起码最新数据救不回来,老底还在。

然后顺着日志翻,发现攻击者还尝试了../wp-config.php这种路径穿越,没成功,因为open_basedir限制住了。万幸,这招是前年另一个坑之后我特意加的。

  • 具体操作:在php.ini里把open_basedir设成/var/www/html/:/tmp/,别偷懒
  • 那个老插件目录名叫old-plugin,其实真名不叫这个,改了点怕被认出,但你们懂就行

折腾到凌晨三点,删了插件、清了木马、重新拉了备份、改了一堆密码,顺便把那个IP段直接拉黑到iptables。最后盯着监控看了半小时没动静,才敢合眼。

现在想想,要是那个插件没删干净,或者备份再晚一周,我今天估计就在这儿发求助帖了。真的,别留任何你以为没用的老代码,它们就是定时炸弹。

哦对了,最后发现那个shell.php里居然留了作者邮箱,一个俄罗斯的域名,我还顺手发了个邮件骂了句脏话。气死了。