记一次典型的网站劫持

简介: 最近接到一个朋友的求助,他的网站被封了,让我帮忙看看。网站是托管在某云平台的,云平台给出的原因是网站涉赌。这就是个最简单网站,几乎全是静态网页,没什么内容,怎么会涉赌呢?难道是云平台搞错了?

记一次典型的网站劫持

起因

最近接到一个朋友的求助,他的网站被封了,让我帮忙看看。网站是托管在某云平台的,云平台给出的原因是网站涉赌。
起初,我也是一脸懵逼,只能请求云平台临时解封,需要复现问题才好排查原因。但当我电脑浏览器输入网址,发现看起来正常的。这就是个最简单网站,几乎全是静态网页,没什么内容,怎么会涉赌呢?难道是云平台搞错了?

排查

首先猜测,是不是网站有敏感词,触发了安全检测的逻辑呢?我仔细浏览网站,都是一些基础的介绍性内容,不太可能出现敏感词。只能再次联系云平台客服给出网站被封的具体原因,他们发给我一个网站的截图,显示内容是菠菜,我检查网址,确实是我朋友的网站。

image.png

网站应该是被攻击了,但我电脑上为什么不能复现呢?难道是已经恢复了?
我把网址发给朋友让他试下,自己顺手也在手机上点击了一下,发现微信上打不开,也被封了。复制到手机浏览器,可以打开,但是自动跳转到一个菠菜网站。终于能复现了 :)

分析

原因就是网站被劫持了,猜测可能有两种情况:
1、域名被污染了,DNS 解析到了恶意网站
2、网站本身的问题,被黑客入侵,修改了网站的内容

我首先检查了域名的解析,发现没有问题,解析到了正确的 IP 地址。那就是网站本身的问题了。
使用 google 浏览器,打开开发者工具,模拟手机重新访问网站,发现首页正常显示,但马上又自动跳转到了菠菜网站。仔细分析 NetNetWork 请求记录,发现一个可疑的 js 请求:
image-1

打开这个 JS,源码如下:
image-2

很明显,就是这个 JS 搞的鬼,还故意做了判断,只有手机端才会跳转。

那么这个 JS 请求是怎么来的呢?直接按这个 JS 网址索搜关键字,找不到。只能用笨办法,逐一分析请求记录。
第一个请求是首页 index.html,打开源码,发现一段奇怪的代码:
image-3

看起来很可疑,解码查看如下:
image-4.png

终于找到原因了,首页被插入了这段恶意代码,这段代码会动态加载 JS,然后跳转到菠菜网站。 我删除了这段代码,并索搜,检查了其他页面,没有发现其他异常代码。重新上传页面到服务器,再次访问,问题解决!

又被劫持

但是,没过几天,朋友又反馈,网站又还是会跳到其他网站。我重新排查,发现个新的现象:不管是手机端还是模拟手机浏览器,都只会出现一次,再次访问就不会跳转了。这次病毒更狡猾了?

只能重新分析请求记录,发现这个 JS 请求:
image-5.png

但是,这个 JS 请求是个空的 HTML 页面,没有任何内容。我只能猜测,这个 JS 是动态生成的,有概率成功请求。问题又回来了,首先得想办法稳定复现。
黑客无非两个手段控制,一是简单按随机概率响应攻击 JS;二是识别终端用户,只有第一次访问才会跳转。多试几次,排除第一个情况。
因为没有登录信息,黑客无非就是通过 IP 或 MAC 地址识别终端用户。于是,我使用代理,每次切换不同 IP 访问,果然每次都会跳转。果然更狡猾了!

再次分析

我重新请求上面可疑的 JS 请求,发现这次返回的内容不是空的了,而是一段 JS 代码:
image-6

手段类似,还是使用编码混淆的方式,跳转到广告网站。那么这个 JS 请求又是怎么来的呢?与上一次一样,按顺序逐一分析请求记录,排除首页之后,是一些 JS 请求:
image-7.png

先直接搜索关键字试试,果然找到了相关的 JS 文件:
image-8.png

还是一样的手段,混淆并动态生成 JS,跳转到广告网站。区别是这次是通过 JS 文件加载的,而不是直接插入到 HTML 页面中。

总结

这是非常典型的网站入侵攻击。黑客非法取得源码文件修改权限后,使用了两种方式劫持网站,一是直接插入恶意代码到 HTML 页面中,二是通过 JS 文件加载恶意代码。这两种方式都是通过混淆代码,动态生成 JS,跳转到广告网站。黑客还使用了一些手段,如只识别手机端,或第一次访问才会跳转,通过 IP 地址识别终端用户等。

黑客是用什么手段入侵的呢?我只能猜测,可能是通过 FTP 泄露的密码,或者是网站的漏洞。这个网站是一个静态网站,没有输入之类的数据交互。其实托管平台也已经有一些基础的安全手段,如:修改 FTP 密码;设置文件权限,只读不可写;PHP 安全参数设置;网站备份等。这些基础安全措施,可以有效的防止大部分的入侵攻击。

搜索发现,这个攻击早在 22 年就有报道了https://www.freebuf.com/articles/network/351899.html,看样子影响面挺大的。

目录
相关文章
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
723 4
|
消息中间件 Java 测试技术
深聊性能测试,从入门到放弃之:Locust性能自动化(一)初识Locust
深聊性能测试,从入门到放弃之:Locust性能自动化(一)初识Locust
844 1
|
前端开发
UniApp 中的 image 属性讲解
UniApp 中的 image 属性讲解
1442 2
|
4月前
|
机器学习/深度学习 人工智能 供应链
智能体人才培养方向:对接国家“AI人才战略”的能力建设体系
“智能体来了”构建分层分类培养体系,覆盖高校学生、职场转型者与企业员工,通过实训实战与认证评价,提升岗位适配率至85%,助力破解AI人才短缺难题,精准对接国家人工智能发展战略。
|
11月前
|
存储 固态存储 NoSQL
阿里云服务器ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘区别与选型参考
阿里云系统盘与数据盘如何选择?目前阿里云服务器的云盘主要有ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘可供选择,很多新手用户并不清楚他们之间的区别,也就不知道应该如何选择,因为不同的云盘在最大IOPS、最大吞吐量等性能上是有区别的。本文基于阿里云官方技术文档,结合实际应用案例,对ESSD AutoPL、ESSD PL-X、SSD云盘等主要云盘的区别做个介绍,以供参考,助您构建高性能、高可靠、高扩展的存储架构。
|
数据采集 机器学习/深度学习 数据挖掘
揭秘DataFrame缺失值处理的神秘面纱:从填充到删除,再到插值,你的数据能否起死回生?
【8月更文挑战第22天】在数据分析中,处理DataFrame内的缺失值至关重要。本文通过一个关于公司员工基本信息的例子,展示了三种常见方法:填充、删除和插值。首先构建了一个含有缺失值的DataFrame,然后使用均值填充年龄缺失值;接着演示了删除含缺失值的行;最后采用线性插值填补。此外,对于复杂情形,还可利用机器学习预测填充。合理处理缺失值能有效提升数据质量,为后续分析奠定坚实基础。
400 2
|
机器学习/深度学习 人工智能 安全
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
阿里云 AI 容器镜像有开箱即用、生态丰富、性能优化、安全合规和服务支持五大优势。
基于若依的ruoyi-nbcio流程管理系统增加流程节点配置(一)
基于若依的ruoyi-nbcio流程管理系统增加流程节点配置(一)
219 0
|
SQL 关系型数据库 MySQL
mysql转sqlite3实战+部署sqlite3应用
mysql转sqlite3实战+部署sqlite3应用
1280 0
|
数据可视化 开发工具 git
Git【实践 01】使用Git工具托管本地代码到GitHub简单易懂的图文教程(含Git+第三方工具TortoiseGit+中文语言包百度云盘资源)
Git【实践 01】使用Git工具托管本地代码到GitHub简单易懂的图文教程(含Git+第三方工具TortoiseGit+中文语言包百度云盘资源)
348 0