问题诊断:确认域名被劫持
在开始任何修复操作前,你必须先确认网站确实遭遇了域名劫持,而不是其他问题。请按顺序执行以下检查。
检查1:本地Hosts文件劫持
打开你电脑的命令提示符(Windows)或终端(Mac/Linux),执行以下命令:
ping yourdomain.com
将 `yourdomain.com` 替换为你实际被劫持的域名。观察返回的IP地址。立即执行以下操作:
- Windows系统:打开 `C:\Windows\System32\drivers\etc\hosts` 文件(用管理员权限的记事本)。
- Mac/Linux系统:在终端输入 `sudo nano /etc/hosts`。
检查文件中是否存在指向你域名的异常行。如果发现类似 `192.168.1.100 yourdomain.com` 的行,且该IP并非你服务器的真实IP,则说明存在本地劫持。删除该行并保存文件。
检查2:DNS解析劫持
使用在线DNS查询工具(如 Google Admin Toolbox Dig)查询你域名的A记录和NS记录。将查询结果与你域名注册商处设置的DNS记录进行比对。如果NS记录被指向未知的DNS服务器,或A记录IP地址被篡改,则确定为DNS劫持。
检查3:WordPress数据库与文件劫持

通过FTP或主机控制面板的文件管理器,检查网站根目录下是否存在陌生的 `.php`、`.js` 或 `.htaccess` 文件。登录你的网站数据库管理工具(如phpMyAdmin),执行以下SQL查询,检查 `wp_options` 表中的 `siteurl` 和 `home` 选项值:
SELECT FROM `wp_options` WHERE `option_name` IN ('siteurl', 'home');
如果这两个值被修改为陌生域名,则数据库被篡改。
修复操作:分步夺回控制权
根据诊断结果,按以下对应流程操作。建议按顺序执行所有步骤,以确保彻底清除威胁。
第一步:修复DNS与域名注册商账户
这是最优先的步骤,因为攻击者可能控制了你的域名。
- 立即登录你的域名注册商账户(如GoDaddy、Namecheap、阿里云万网)。如果你无法登录,请立即使用“忘记密码”功能重置密码,并检查账户的注册邮箱是否被篡改。
- 在域名管理面板中,检查并修改DNS设置:
- 将NS记录改回你的主机服务商提供的DNS服务器(例如,`ns1.yourhost.com` 和 `ns2.yourhost.com`)或可靠的第三方DNS(如Cloudflare的DNS)。
- 将A记录指向你服务器的正确IP地址。
- 开启域名注册锁(Registrar Lock),并启用WHOIS隐私保护(如果可用),以防止未经授权的转移。
- 在账户设置中,启用二次验证(2FA)。
第二步:彻底清理被入侵的WordPress文件
不要试图在旧文件中寻找恶意代码,最安全的方法是替换核心文件。
- 从 WordPress.org官网 下载最新版本的WordPress安装包。
- 通过FTP连接到你的服务器。删除以下目录和文件(注意:操作前请备份你的 `wp-content/themes` 和 `wp-content/plugins` 目录):
- `wp-admin`
- `wp-includes`
- 所有根目录下以 `wp-` 开头的 `.php` 文件(如 `wp-login.php`)。但务必保留 `wp-config.php` 文件。
- 将下载的WordPress安装包解压,将全新的 `wp-admin`、`wp-includes` 目录以及根目录下的所有PHP文件上传到服务器,覆盖剩余文件。
- 检查并清理 `wp-content` 目录:
- 逐一检查 `plugins` 和 `themes` 目录下的每个插件和主题文件夹。删除任何你不认识、已禁用或来源不明的插件/主题。
- 检查 `uploads` 目录,按日期排序,删除在问题发生日期前后上传的可疑文件(如 `.php` 文件)。
- 检查根目录下的 `.htaccess` 文件。将其重置为WordPress默认规则。如果内容异常,直接删除它,WordPress会在下次访问时生成一个干净的。默认规则如下:
BEGIN WordPress
RewriteEngine On
RewriteRule . - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
END WordPress
第三步:修复被篡改的数据库
- 登录phpMyAdmin,选择你的WordPress数据库。
- 找到 `wp_options` 表(注意:如果你的表前缀不是 `wp_`,请相应调整),点击“浏览”。
- 找到 `option_name` 为 `siteurl` 和 `home` 的两行,确保 `option_value` 是你的正确域名(例如 `https://yourdomain.com`)。如果被修改,直接点击编辑进行修正。
- 执行以下SQL查询,搜索数据库中可能被注入的恶意代码或陌生域名链接(将 `yourdomain.com` 替换为你的正确域名):
SELECT FROM `wp_posts` WHERE `post_content` LIKE '%