如果你的网站“被劫持”,要先冷静,因为不同类型的劫持,处理方法完全不一样。我帮你按“实战排查 + 修复流程”给你一套完整应急方案。
一、先判断:你的网站被哪种“劫持”了?
先看现象👇
🔴 1. DNS劫持(最常见)
表现:
访问域名进了奇怪网站
不同地区访问结果不同
ping IP 不对
🔴 2. 页面被篡改(Web劫持)
表现:
网站出现广告/博彩内容
页面源码被改
JS/CSS异常
🔴 3. 跳转劫持(引流劫持)
表现:
打开网站自动跳转
只在手机/某浏览器出现
🔴 4. 服务器被入侵(最严重)
表现:
后台被登录
文件被修改
新增未知用户
🔴 5. CDN/机房层劫持(高级情况)
表现:
全球用户异常
HTTPS仍显示正常但内容被改
二、应急处理总流程(黄金步骤)
发现异常 ↓ 立即隔离 ↓ 确认攻击类型 ↓ 修复入口漏洞 ↓ 恢复数据 ↓ 加固系统
三、第一步:立即“止血”(最重要)
✅ 1. 先暂停访问(防止扩散)
临时关站 / maintenance mode
或切换到静态页面
✅ 2. 锁账号
立即检查:
管理员账号
SSH账号
FTP账号
云服务账号
👉 全部改密码 + 开启2FA
✅ 3. 断开可疑连接
SSH / 面板 / API全部强制下线
四、第二步:判断劫持类型(关键排查)
🔍 1. 检查 DNS 是否被改
操作:
nslookup yourdomain.com
或:
dig yourdomain.com
看点:
IP是否是你的服务器?
是否突然变成陌生IP?
🔍 2. 检查网站文件是否被篡改
重点目录:
/index.html/js//wp-content/(WordPress)/uploads/
查异常:
grep -r "http" . grep -r "eval" . grep -r "base64" .
👉 常见恶意代码:
自动跳转 JS
iframe注入
加密脚本
🔍 3. 检查服务器进程
ps aux netstat -tulnp
👉 看:
不认识的进程
异常外连IP
🔍 4. 检查日志
access.log
auth.log
nginx日志
重点:
异常登录IP
大量POST请求
管理后台访问
五、第三步:清除攻击源
🔴 1. DNS劫持修复
改回官方DNS
启用 DNSSEC(如果支持)
改注册商密码
🔴 2. Web页面劫持修复
用备份恢复文件
删除恶意JS
重装CMS(推荐)
🔴 3. 服务器入侵修复(最关键)
必须做:
✔ 重装系统(推荐)
👉 这是最彻底的方法
✔ 或至少:
删除未知用户
更新SSH key
修复漏洞软件
🔴 4. 后门清理(容易被忽略)
检查:
cron任务
启动项
隐藏脚本
六、第四步:安全加固(防止再次被劫持)
✅ 1. 强制 HTTPS
全站HTTPS + 301跳转
✅ 2. 开启 HSTS
防止降级攻击
✅ 3. DNS安全
DNSSEC
Cloudflare等安全DNS
✅ 4. 服务器安全
禁用密码登录(只用SSH key)
修改默认端口
防火墙(只开放必要端口)
✅ 5. CMS安全(如果用WordPress)
更新插件
删除不明插件
限制管理员权限
✅ 6. 文件防篡改
文件完整性监控
Hash校验
✅ 7. CDN/WAF
Cloudflare WAF
防CC攻击
防JS注入
七、快速判断“是否还被劫持”
测试方法:
✔ 用不同网络访问
手机流量
WiFi
VPN
✔ 清缓存访问
Ctrl + F5
✔ curl测试
curl -I https://yourdomain.com
八、最常见“被劫持根源排行榜”
1️⃣ 弱密码 / 被撞库
2️⃣ CMS漏洞(WordPress最常见)
3️⃣ 插件后门
4️⃣ SSH泄露
5️⃣ DNS被改
6️⃣ 服务器未更新
7️⃣ 云控制台被入侵
九、一句话总结
👉 网站被劫持 = 要么DNS被改,要么服务器被入侵,要么流量被中途篡改
十、终极应急思维模型(非常重要)
先止血(停服务) ↓ 找入口(DNS / 服务器 / 代码) ↓ 清除后门 ↓ 全量重建信任(重装/换密钥) ↓ 加固防御体系