在平凡的一天,我正在遨游互联网的海洋,淘宝,刷微博,然后点击一个技术论坛链接。突然,一位网友的求助贴吸引了我的注意。他的网站遭到了劫持!这不就是我所擅长的么?瞬间,技术细胞活跃起来,我准备挽起袖子,进行一场技术上的战斗。
现象描述
当移动端访问特定的URL,例如 http://***.***.com/index.php/马赛克/index/ncase**********************
时,会出现劫持现象。劫持的代码如下:
<script src=https://*******.com/sj.js></script>
这是一段明显的恶意脚本。接下来,我要分享如何一步步排查并解决这个问题。
排查步骤
1. 确认影响范围
首先,我尝试去除问题URL的路径,只保留参数,发现劫持现象依然存在。这说明这是一个非固定路径的劫持,影响范围为全站的移动端访问。
2. 确认影响时间
要确定问题出现的时间,我们可以查看nginx的日志。使用 cat access.log | grep " 200 86 " | more
,我发现了一个时间为11/Sep/2023:11:26:21
的日志条目,但这只是日志存储开始的时间。因此,实际的影响时间可能更早。
3. 排查php文件
我们可以使用find
命令来查找近期有变更的php文件。在这里,我没有发现任何可疑的木马文件。
4. 排查nginx
通过检查80/443端口的占用进程,以及查看nginx的主配置文件,我确认nginx配置没有被篡改。
5. 排查php
我查看了php的相关配置,发现其中一个php.ini文件的修改日期异常,且其中有一段非常可疑的base64编码。解码后,它是一段恶意代码,用于劫持用户请求。
6. 其他排查
除此之外,我还检查了主机上的其他服务和计划任务,确认没有其他可疑的活动。
解决方案
- 清除恶意代码:首先,我们要从php.ini中删除那段恶意代码。
- 升级软件:确保所有的软件,包括nginx、php和其他依赖,都是最新的版本。
- 加强监控:可以考虑使用一些专业的监控工具,如WAF,来防止未来的攻击。
- 备份和恢复:定期备份你的网站,确保在受到攻击时,可以迅速恢复。
总结
网站劫持是一个非常严重的问题,它不仅会影响网站的正常运行,还可能导致用户信息泄露。但只要我们细心,有一套完整的排查步骤,就能迅速地定位问题并进行修复。希望这篇文章能帮助到遭遇同样问题的你。