记录一次恶心的网站劫持
额,是的,不知道什么原因,我的博客被劫持了。
黑夜到来
事情发生在今晚 23:00 左右,我和往常一样准备开始完善自己的博客。但是,当我开始 hexo s
进行本地调试时,网站自动被转到了一个奇怪的网站 开地网诗词。(别问我为什么记录这个网站链接,总有一天我要搞死它!)
最开始我以为是某个软件搞得鬼,吓得我感觉打开本地 host 文件,结果是一切正常。
这下我就更慌了,害怕是某种更高级的手段(我太菜了,高级的我怕应付不了T-T)。
沉着冷静
我急忙打开我的博客,我害怕我部署的博客也被劫持了。庆幸的是——博客一切正常!
这下,我安定了一些,开始冷静分析。既然没通过 host,也没劫持我的博客,只是在我使用 localhost:4000 调试博客时出问题,那么至少问题出现时间可以锁定为最后一次部署(2022/7/24 02:15)到今天晚上(2022/7/24 22:40),问题出现的可能操作为Hexo 插件安装(至少我不会自己手动劫持我自己吧)。
曙光初现
所以,我有理由怀疑它只是在我还未部署的博客源码中加入了自动跳转相关的代码。
于是我果断 F12 大法。
我先提前中断网页加载,然后来到源码 index.html 文件里搜索和其网址相关的字符串。
果不其然,攻击者在我生成 index.html 文件里加入了 <meta http-equiv="refresh" content="10;url= http://xfbbs.com/ ">
标签,然后实现了网站的跳转。
很好,现在目标已经浮现,干他就完了!
黎明将至
简单分析一下,这大概有两种可能性:
- 要么攻击者在我
hexo g
生成静态文件时加入字符串; - 要么攻击者在我源代码中已经加入了字符串。
先考虑第一种情况,我卸载了所有从昨天到今天安装的插件,然后再次 hexo cl && hexo g
。
结果是,没用,攻击字符串还是存在。
那就暂时排除第一种可能,剩下就是在未部署的源代码里找了。
日出云开
最后,几经查找,只在博客主题文件夹里的 layout.ejs
中找到了其定义。
好家伙,这么狂的吗?直接改了我的源码文件。
好了,问题大致是解决了,剩下的就是寻找问题的原因了。
乘胜追击
目前可以确定的是一定是一下几个插件的问题:
插件名称 | 是否有问题 | 审查日期 |
---|---|---|
hexo-neat | 否 | - |
gulp | - | - |
gulp-htmlclean | - | - |
gulp-htmlmin | - | - |
gulp-minify-css | - | - |
gulp-uglify | - | - |
gulp-imagemin | - | - |
gulp-debug | - | - |
gulp-clean-css | - | - |
gulp-changed | - | - |
gulp-if | - | - |
gulp-plumber | - | - |
gulp-babel | - | - |
babel-preset-es2015 | - | - |
del | - | - |
@babel/core | - | - |
不早了,我先睡了,以后慢慢查,然后盘它。