1、前言
某天在搜索引擎查找资料的时候,发现其中一条结果点开后,打开的官网会跳转到菠菜站点,但手动输入官网域名却正常,能做到网站劫持效果的方式有很多,但是直觉告诉我大概率被挂了JS,于是看了一下网页源代码,果然找到了可疑代码,但存在混淆,无法直观看到跳转逻辑,本文简单记录处置过程。
2、过程简述
相较原始代码,在前端代码中主要存在两处修改点,如下图所示。
第一处的内容为SEO方面的关键词,主要目的是让搜索引擎收录,当用户搜索菠菜相关关键词的时候,可以将当前站点展示出来,解码之后如下图所示。
第二处的内容是与跳转菠菜站点有关的代码,简单格式化之后如下图所示。
很经典的eval函数是不是,逻辑只是看着复杂,其实仔细观察一下不难看出是通过字符串替换的操作,还原出另一段JavaScript,最后使用eval函数来执行代码,这里使用一个简单粗暴的方法,将eval改成console.log,即可得到最终执行的代码,如下图所示。
经由此步得到了另一个新的链接地址,内容如下。
与前面不一样的混淆方式,但是也不复杂,只对字符串做还原处理即可,所有字符串的引用全部由_0x3c4592函数返回,不需要研究解密过程,直接调用取结果回填即可,对其稍做处理即可得到较为清晰的代码,如下图所示。
至此便可看明白这段代码干了什么操作,一是根据referrer判断是否由搜索引擎的结果页跳转而来,二是运行环境检测,通过设备类型及分辨率,不符合正常设备的将不执行任何动作,符合条件的会从四个地址中随机选择一个进行跳转。
至此已经可以确定是修改的前端文件达到的劫持效果,至于通过什么漏洞修改的服务器文件就没有去研究了,相关线索已部分打码,感兴趣的伙伴可以自行探索分析。