Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

记一次典型的网站劫持 #55

Open
jinhailang opened this issue Jul 31, 2024 · 0 comments
Open

记一次典型的网站劫持 #55

jinhailang opened this issue Jul 31, 2024 · 0 comments
Labels

Comments

@jinhailang
Copy link
Owner

jinhailang commented Jul 31, 2024

记一次典型的网站劫持

起因

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

排查

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

image

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

分析

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

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

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

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

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

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

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

又被劫持

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

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

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

再次分析

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

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

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

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

总结

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant