头疼,网站竟然被挂马了,我简单研究了一下
时间:2025-4-13 14:25 作者:独元殇 分类: 开发相关
[toc]
惊恐的发现
这几天没有怎么上网站,昨天下午打开电脑打开我的网站时,突然感觉有点不对劲。
我在浏览器地址栏输入 ccg
,浏览器一如既往地给我补全 ccgxk.com
,然后我回车,网页在转动中,突然跳到了一个非法赌博网站,我以为我眼花了,然后重新打开我的网站,发现这次没有跳转。我反复试了几次,感觉应该是浏览器其他页面的跳转吧。
但是,我还是有点怀疑,因为我以前吃过亏。于是打开另一个浏览器,火狐浏览器,打开隐私界面,我去!真的跳转到赌博页面!!!我查看源代码,转了半天,感觉也没有什么不对劲,于是又重复了几次,发现每次都是第一次打开时,会跳转,再刷新就没了。
排查问题点
这是什么原理呢?我现在需要排除是网站文件的原因,亦或服务器解析的原因。
于是我将 index.php 修改后,发现不跳转了。那就是网站文件被篡改了。
然后我就使用 php 里的 exit('xxx');
这种语句来逐行调试,之后我..... 我差点有点怀疑人生,我苦笑了一下,大叹气一口,那个跳转到赌博网站的坏坏代码,竟然就写在 jquery.min.3.5.1.js
外链里,而且是把 jqurey 的代码清空了,只留下它那个坏坏代码。
代码是意思是:加载网站后,检查一下 cookie 里有没有留下标记,如果没有(代表这是第一次打开这个页面),就跳转到非法网站且留下 cookie 。这样,如果我们不清理 cookie,那么只会看见这个非法网站一次。黑客认为这样可以神不知鬼不觉。
为什么不追加到 jqurey 原来的代码后面呢?为什么不直接写到模板文件的其他文件里呢?说实话,如果它是追加到 jq 原代码后面,我可能找破天都找不到问题出在哪里。
哈哈,如果是想做到神不知鬼不觉,追加 jq 后是对的,但清空 jq 就不对了:这样我会发现的。
其实,我在昨天下午感觉不对劲了,我突然发现 jQuery 一直不起作用,浏览器控制栏疯狂报 $
之类的红色错误!但我只是简单将其归结为服务器网速的问题。没想到,黑客把我的 jqurey 文件清空了,然后将坏坏代码放到里面......
我连忙将 jq 更换成其他的可用的一个地址,网站于是不再跳转到非法网站。
文件是怎么被篡改的
网站被挂马,是正常的现象,我对这个篡改是什么时候怎么篡改的有点兴趣。更重要的是,我得排查这是不是 emlog 的问题,难道是 emlog 有 0day 了???
我打开我的网站的文件管理器,然后发现了有这一个不对劲的东西。当然还有我的被篡改的 jq
。
它是 根目录 下的 data
。
前天被修改的,而且里面空无一物。
很明显,这个文件不是我搞的。 data
文件夹是 前天下午一点半被动过的,而 被篡改的 jq
的修改时间也是 前天下午一点半,中间只差两分钟,很显然,这两个文件是有关联的。
如果没猜错,挂马文件就在 data
里。那到底是怎么被添加到我的网站的?FTP 还是 emlog 的 0day 漏洞?还是其他???
于是我就打开统计,发现那个时间点有一个 IP 访问过我的页面。
但我打开它的历史访问记录后,我傻眼了,这个 IP 这几天足足访问了我页面几百次....
而且时间均匀。
为了寻找答案,我把服务器的日志下载了下来。
重点排查 4-11 这一天。
在下午 1点半 这个作案时间点,我有两点发现:
- 这个北京的 IP 可能是巧合,是个机器人,叫“自动流水线”,每半小时就会来访问一次,意图未知。
- 这个
/data/
文件夹里,原来有个md5.php
,它可以篡改我的文件。它之所以叫md5.php
,与/data/
一样,都是混淆名称,让人们以为这是个正常的文件。
作案完毕后,/data/
被清空了。
那么,疑问来了,/data/
文件夹是怎么进入我的文件里的?这是整个事件里最恐怖的事!
根据最近 4 天的日志。是 4-11 号凌晨 01:11 分的时候,/data/
这个文件夹第一次被 GET 200 成功
,而相关 IP 是当天凌晨 01:07 第一次访问我的网站,是百度链接跳转进来的,关键词是 site:ccgxk.com
,可怕的是,我找不到任何的蛛丝马迹。三分钟的时间,只有 GET,然后我的网站里就有了 /data/
的痕迹。
可能的原因
很遗憾,我目前只知道这些,黑客是个活人,他操作着几个 IP,他还有「欣赏阅读」过我的网站,但是他那天凌晨从百度外链进入我的页面后,直接在三分钟内,日志里完全没有记录的情况下,访问了 /data/md5.php
这个挂马程序,至于这个挂马程序是那个时候放入我的文件里的吗?我不知道,日志没有任何记录,那么....
那么真相有可能是:挂马程序很早就放入我的网站文件里的,那天凌晨,黑客只是访问了一下,确认他的挂马程序还在,于是就去睡觉了。下午,访问挂马程序,然后将 jq 篡改后,就删去挂马程序,然后事件结束。
可是我又将最近 2 年的日志都下载了下来!!! 搜索 /data/
这个文件夹的 访问 记录,发现非 404 的有效记录,只有案发当天的哪个 2025-4-11,也就是说,挂马程序很可能就是在当天进入我的网站里的,而且是 99% 的可能性!
我一身冷汗!啊!这三分钟里到底发生了什么???
是的,故事的高潮就在这 三分钟!上面图中的这三分钟,我的网站就被攻陷了 (ಥ_ಥ) ,我研究过来研究过去,就是找不到关键点.... 到底是哪里出了问题!!!他有看过我的后台,发现进不去后,又退了出来,他一直停留在这个页面,然后... 然后... 然后... md5.php
这个可恶的文件就出现了。是 emlog 的 0day 还是服务器商的服务器的问题呢?这可怕的三分钟到底发生了什么???
攻陷后,黑客是放置了一个广告,说明这是一个专业黑客,不是玩着搞的,而是有任务!他要给他们的客户做宣传!说明他肯定不是只搞我一个人的网站,他还会搞其他人的。
- 如果是服务器商的问题?那他的受众显然很小,不大可能。
- 是 emlog 的 0day 吗?这三分钟,我没有发现任何 POST ,所有 GET 都很正常,说明也不是,
- 是我的 FTP 密码泄露了吗?那他还上传挂马程序做甚?直接 FTP 改不爽歪歪?
- 暂时没有其他可能了。
那真相。真是个鬼了。我真的想不到。
如果黑客大哥巡回,能发现我的这篇文章,很希望能够解答一番,感激不尽!!!
答案找到了
【2025-4-15 号 更新】
在某个高质量网站上,我找到了一个针对我这个问题的回复,是一个大佬说的。向我透露出了黑暗的互联网深处的一些内容:

(没有多神秘,首先如果你确定对方动手之前用 site:ccgxk.com 进来的话,我估计你早就被挖掘过了,甚至shell已经拿到了,被发出去后,大家只是随机选择了在你那挂马,挂完你才发现的。此外可能性更大的是你的服务器被拿到了,列出了website,逐个看流量,然后对流量还不错的值得挂的挂一下。至于被黑的主体,可能是跨站,如果你是用虚机的话,一些小虚机很容易跨,如果是你的云服务器,要么是安全被渗透,要么就是非大厂的云主机,那种跟虚机一样,换个名字而已,虚拟化没有多神,权限隔离也只在能力范围内而已。包括那么流行的docker。
所以,根据自己的环境载台情况做排除,不要局限于系统本身。)
是的,就是这样!因为我以前有进过某主机商的服务器,拿到了 shell ,看着三千多个文件夹,我也有这种冲动,也想过这种事。就是这样!
推荐阅读:
早些年使用开源程序有一个问题就是 hacker 可能比其他人更早发现漏洞,以及对程序的目录结构更加了解。
我们也常常把webshell无论大马小马写在一些具有迷惑性的文件中,比如 md5.php、skin.php、admin_back.php等等。
第一种情况占大多数,且目的是蹭你的流量。第二种很罕见,一年都没有几次。第一种,只要你这个站没流量,在他们眼里就是站,那就不用担心。因为人家看不上。第二种,反正没几次,不在乎了。
综合来看,只要是个小人物,被黑就被黑了,重装系统即可,之后就没事了,没人在乎的嘿嘿(如果到有人在乎的程度,那就得花钱想办法了)
203.x.x.x 是一个香港联通的 IP. 走的联通国际网 (AS10099).
这两个 IP 地址都还挺有意思的,一个是北京移动 (AS56048); 另一个是香港联通 (AS10099). 看样子应该都是机房线路,实在不行就按 ASN 拉黑名单吧。毕竟来自机房 IP 的访问大多数都不是真人。
还有一个疑点:`/?action=cal` 这个访问现在会返回 404 页面,但是在你的日志里却是 200. 而且更有意思的是任何以 `cal` 开头的参数都会产生 404, 而别的不存在的参数则不会。看来雷埋了不止一层呢。
(没有多神秘,首先如果你确定对方动手之前用site:ccgxk.com进来的话,我估计你早就被挖掘过了,甚至shell已经拿到了,被发出去后,大家只是随机选择了在你那挂马,挂完你才发现的。此外可能性更大的是你的服务器被拿到了,列出了website,逐个看流量,然后对流量还不错的值得挂的挂一下。至于被黑的主体,可能是跨站,如果你是用虚机的话,一些小虚机很容易跨,如果是你的云服务器,要么是安全被渗透,要么就是非大厂的云主机,那种跟虚机一样,换个名字而已,虚拟化没有多神,权限隔离也只在能力范围内而已。包括那么流行的docker。
所以,根据自己的环境载台情况做排除,不要局限于系统本身。)
没错,就是这样,能解释为什么以 site:ccgxk.com 进来,就是看 SEO,建立文件夹没有经过 HTTP,那就是直接用服务器搞的...... 我这就是一个一年才几十块钱的虚拟主机,西部数码的。这难搞了。算了,先挂着将就吧。经常备份数据库就行,文件没什么。
至于 ?action=cal ,这个是 emlog 的日历 GET,这个我看了下系统文件,没有问题。github 真厉害,这都能找到。(*゚Д゚*)