WordPress驱动着全球超过40%的网站——这种庞大的普及程度使其成为全球黑客最主要的攻击目标。当您的WordPress网站感染恶意软件时,后果远不止是小小的不便:Google可能将您的域名标记为危险网站,托管服务商可能因您的服务器每小时发送数千封垃圾邮件而暂停您的账户,您精心积累的搜索排名也可能在一夜之间崩溃。本指南将引导您完成每一个步骤——从识别早期警告迹象,到手动清理感染文件,再到加固网站以防止再次被入侵。
您的WordPress网站被黑的迹象
WordPress上的恶意软件通常被设计为在网站所有者注意到之前悄悄运行数周。其目的是在不引发明显故障的情况下利用您的服务器资源和网站声誉。请警惕以下红色警告:
- 访客被重定向到未知网站 — 从Google搜索或通过移动设备访问的用户会被自动跳转到垃圾、赌博或钓鱼网站,而您自己的桌面浏览器却显示正常首页。
- Google Search Console报告安全问题 — Googlebot在您的网站中发现了恶意内容、钓鱼页面或有害下载文件。
- Google显示"此网站可能有害"警告 — Google安全浏览已将您的域名列入黑名单。这种情况发生后,自然流量通常会在数小时内跌至接近零。
- 托管服务商发送资源过度使用警报 — 恶意软件经常使用您的服务器发送大量垃圾邮件或运行加密货币挖矿程序,导致CPU和RAM飙升并触发自动警告。
- 目录中出现陌生PHP文件 — 您从未上传的文件突然出现,例如
wp-content/uploads/2026/06/abc123.php,或随机命名的文件散落在核心文件夹中。 - 无法登录WordPress管理后台 — 您的管理员密码已被更改,或网站中被添加了陌生的管理员账户。
- 网站加载异常缓慢 — 某些恶意软件会在后台向远程服务器发起出站HTTP连接,导致首字节时间(TTFB)偏高,页面加载迟缓。
- 访客的杀毒软件触发警报 — 客户或读者联系您,表示其安全软件在访问您的网站时发出了警告。
如果您发现上述任何症状,请立即采取行动。每延误一小时,恶意软件就有更多时间传播,Google就会收集更多关于您域名的负面信号,您的搜索排名恢复时间也会更长。
WordPress中常见的恶意软件类型
了解感染您网站的恶意软件类型有助于更高效地找到并清除它。WordPress感染通常分为以下几类:
| 恶意软件类型 | 工作原理 | 可见症状 | 严重程度 |
|---|---|---|---|
| 后门程序(Backdoor) | 允许攻击者随时重新进入网站的隐藏脚本 | 陌生PHP文件;核心文件被修改 | 严重——若有任何实例残留,清理后网站仍可能被再次感染 |
| SEO垃圾注入 | 注入隐藏垃圾链接或创建针对搜索引擎的虚假页面 | Google索引到您从未创建的页面 | 高——造成长期SEO损害 |
| 恶意重定向 | 将访客重定向到危险或垃圾网站 | 访客投诉;被Google列入黑名单 | 高——破坏声誉和排名 |
| 垃圾邮件发送器 | 利用您的服务器发送大量垃圾邮件 | 主机被暂停;CPU/RAM飙升 | 高——您的IP被列入黑名单;正常邮件被退回 |
| 钓鱼页面 | 嵌入伪造的银行或热门服务登录页面 | Search Console报告钓鱼活动 | 严重——Google立即将域名列入黑名单 |
| 加密货币挖矿程序 | 使用您服务器的CPU挖掘加密货币 | CPU持续高占用;网站极度缓慢 | 中至高——浪费主机资源 |
开始清理前:必要准备步骤
在没有充分准备的情况下仓促进行清理可能会使情况更糟。请先遵循以下步骤,确保您有安全保障,同时防止攻击者在您工作时趁虚而入。
第1步:备份所有内容(包括感染文件)
对感染网站进行备份有两个目的:一是在清理过程中出现问题时提供恢复点,二是保留用于事后分析的证据。通过DirectAdmin的备份/恢复功能创建完整备份,或在您的主机支持SSH访问时使用命令行:
# Full file backup tar -czf backup-before-clean-$(date +%Y%m%d).tar.gz public_html/ # Database backup mysqldump -u DB_USER -p DB_NAME > backup-db-$(date +%Y%m%d).sql
第2步:将网站置于维护模式
在您的WordPress根目录中创建一个 .maintenance 文件,以防止访客在您工作期间接触到恶意脚本:
<?php $upgrading = time(); ?>
将其保存为 public_html/.maintenance — WordPress将自动向所有访客显示维护页面。
第3步:立即更改所有密码
如果攻击者仍持有有效凭据,您所做的任何清理都可能在几分钟内被撤销。在触碰任何文件之前,请更换与该网站相关的所有密码:
- DirectAdmin账户密码
- 所有FTP账户密码
- 所有MySQL数据库用户密码
- WordPress管理员密码(如果您仍然可以登录)
- 用于注册WordPress网站和主机账户的电子邮件地址
使用安全插件扫描恶意软件(最简单的方法)
如果您仍然可以访问WordPress管理后台,请先进行插件扫描,以了解感染范围,然后再进行任何手动操作。
Wordfence安全插件
Wordfence是使用最广泛的WordPress安全插件,包含强大的恶意软件扫描器,可将服务器上的每个文件与官方WordPress存储库及Wordfence持续更新的恶意软件特征数据库进行比对:
# 通过WordPress管理后台安装: # 插件 → 添加新插件 → 搜索 "Wordfence Security" → 安装 → 激活 # 激活后: # Wordfence → 扫描 → 开始新扫描 # 扫描时间因网站大小而异:5–30分钟
Wordfence会列出所有可疑文件并附上严重程度评级(严重 / 高 / 中 / 低),并为每个发现提供一键修复或删除选项。对于许多常见感染,Wordfence可以自动从WordPress.org获取干净副本来恢复被修改的核心文件。
MalCare安全插件
MalCare在自己的云基础设施上执行扫描,而不是在您的服务器上,这使其成为CPU限制严格的共享主机环境的绝佳选择。将网站连接到MalCare账户后,它可以对网站进行深度扫描,而不会造成可能触发主机限速的资源飙升。
通过文件管理器手动清除恶意软件(最彻底的方法)
当插件无法完全清理感染,或者您根本无法访问WordPress管理后台时,通过DirectAdmin文件管理器或FTP进行手动清除就成为必要手段。这种方法更耗时,但能让您完全掌控整个过程。
第4步:检查WordPress核心文件
恶意软件通常会修改WordPress核心文件,如 wp-settings.php、wp-load.php、wp-blog-header.php 以及 wp-includes/ 目录中的文件,以注入恶意代码。从WordPress.org下载与您安装的版本完全相同的干净副本,并使用diff进行比对:
# 下载与网站相同版本的WordPress wget https://wordpress.org/wordpress-6.5.zip unzip wordpress-6.5.zip # 比对核心文件(排除您自定义的wp-config.php和wp-content) diff -rq wordpress/ public_html/ \ --exclude="wp-config.php" \ --exclude-dir="wp-content" \ --exclude-dir=".git" # 意外出现差异的文件 = 可能被恶意软件修改
第5步:搜索并删除危险PHP函数
恶意软件严重依赖某些PHP函数来混淆和执行恶意代码。在整个安装目录中搜索以下模式:
# 搜索常见的恶意软件混淆函数
grep -rn "eval(base64_decode" public_html/ --include="*.php"
grep -rn "str_rot13\|gzinflate\|gzuncompress\|str_ireplace" public_html/ --include="*.php"
grep -rn "preg_replace.*\/e\b" public_html/ --include="*.php"
grep -rn "assert\s*(" public_html/ --include="*.php"
grep -rn "system\s*(\|exec\s*(\|shell_exec\s*(\|passthru\s*(" public_html/ --include="*.php"
# 上传文件夹中不应存在PHP文件——发现的任何此类文件都是恶意的
find public_html/wp-content/uploads/ -name "*.php" -type f
第6步:检查wp-config.php和.htaccess
这两个文件是主要攻击目标。检查 wp-config.php 中是否有引用未知文件的 require 或 include 语句。对于 .htaccess,干净的WordPress安装只包含标准的重写规则块:
# 干净的WordPress .htaccess — 超出此块的任何内容都应怀疑
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# 需要查找并删除的恶意重定向规则示例:
# RewriteCond %{HTTP_REFERER} .*google.* [OR]
# RewriteCond %{HTTP_REFERER} .*yahoo.*
# RewriteRule ^(.*)$ https://spam-site.com/ [R=301,L]
第7步:清理主题和插件
删除所有未激活的主题——攻击者经常在已安装但未激活的主题中植入后门,因为他们知道网站所有者很少检查这些主题。对于正在使用的插件和主题,请从WordPress.org或原始开发者网站重新安装,而不是从可能已感染的备份中恢复。同时删除所有未使用的插件。
# 使用WP-CLI(如果您的主机支持) wp plugin list --status=inactive wp plugin delete plugin-slug-1 plugin-slug-2 # 强制重新安装WordPress核心(替换所有被修改的核心文件) wp core download --force # 从官方来源重新安装特定插件 wp plugin install woocommerce --force wp plugin install contact-form-7 --force
第8步:清理数据库
某些恶意软件会直接向数据库注入代码——例如更改 wp_options 中的 siteurl 值,或在文章内容中嵌入JavaScript。使用phpMyAdmin检查数据库:
-- 验证siteurl、home和admin_email是否正确
SELECT option_name, option_value
FROM wp_options
WHERE option_name IN ('siteurl', 'home', 'admin_email');
-- 搜索已发布文章中注入的JavaScript
SELECT ID, post_title, LEFT(post_content, 200)
FROM wp_posts
WHERE post_content LIKE '%<script%'
AND post_status = 'publish'
LIMIT 20;
-- 搜索指向可疑外部域名的链接
SELECT ID, post_title FROM wp_posts
WHERE post_content LIKE '%spam-domain.com%'
OR post_content LIKE '%eval(base64%';
专业提示: 完成所有清理步骤后,请重新生成 wp-config.php 中的所有WordPress密钥。访问 https://api.wordpress.org/secret-key/1.1/salt/,复制新值并替换现有密钥。此操作会立即使所有活跃登录会话失效——包括攻击者可能仍然保持的会话——迫使所有人使用新凭据重新登录。
如何防止未来被黑(清理后修正文件权限)
不安全的文件权限是WordPress反复感染最常见的根本原因之一。清理后,请将权限设置为推荐值:
# 所有目录:755(所有者:rwx,组:r-x,其他:r-x)
find public_html/ -type d -exec chmod 755 {} \;
# 所有文件:644(所有者:rw-,组:r--,其他:r--)
find public_html/ -type f -exec chmod 644 {} \;
# wp-config.php:640或600(防止通过网络读取)
chmod 640 public_html/wp-config.php
# .htaccess:644
chmod 644 public_html/.htaccess
绝对不要将任何文件或文件夹设置为777(所有人可写)。这将允许服务器上运行的任何脚本——包括恶意脚本——自由地创建、修改或删除文件。这是共享主机环境中最危险的权限设置。
向Google申请移除恶意软件警告
一旦您的网站完全清理干净,您需要请求Google重新评估并从搜索结果中移除所有安全警告。这不会自动发生——您必须提交审核请求:
- 前往 Google Search Console(
search.google.com/search-console)并选择您的资源。 - 导航至安全与手动操作 → 安全问题。
- 点击请求审核,并详细描述发现了哪些恶意软件以及您采取的所有具体清理步骤。
- Google通常会在1至3个工作日内处理审核请求。
您可以通过访问 transparencyreport.google.com/safe-browsing/search?url=yourdomain.com 在Google安全浏览中查看网站当前状态。如果清理后仍显示为不安全,请确保您也在Search Console中提交了更新的Sitemap,以加速重新抓取。
如何防止未来被黑
曾被黑客攻击过的网站在统计上更容易再次被攻击,因为攻击者通常会留下多层后门作为保险。预防的成本远低于恢复。以下是最有效的防护措施:
1. 保持所有内容更新
已知漏洞的过时WordPress核心、插件和主题是头号攻击向量。为安全发布版本启用自动更新:
# 添加到wp-config.php以自动应用次要版本和安全更新
define('WP_AUTO_UPDATE_CORE', 'minor');
2. 从第一天起安装安全插件
Wordfence的免费版本既可充当Web应用防火墙,又可作为文件完整性监控器。它能阻止尝试暴力破解登录的IP地址,在核心文件被修改时发出警报,并在后台运行定时扫描,无需手动干预。
3. 使用强密码并启用双因素认证
针对 wp-login.php 的暴力破解攻击仍然极为普遍。将管理员密码设置为至少16个字符,混合大写字母、小写字母、数字和符号。使用WP 2FA或Google Authenticator等插件启用双因素认证——即使您的密码泄露,这一措施也能阻止绝大多数基于凭据的攻击。
4. 限制登录尝试次数并保护登录URL
安装 Limit Login Attempts Reloaded 插件,在可配置的失败登录次数后自动封锁IP地址。您还可以使用 WPS Hide Login 将登录URL从默认的 /wp-login.php 更改为机器人和扫描器所不知道的自定义路径。
5. 删除未使用的插件和主题
每个已安装的插件和主题都是潜在的攻击面,即使它没有被激活。删除所有您未在使用的内容。只安装真正需要的插件的精简WordPress环境比拥有数十个休眠插件的环境难以攻破得多。
6. 设置自动每日备份
优质的共享主机包含每日备份,但建议使用UpdraftPlus等插件配置额外的异地备份,将副本发送至Google Drive或Dropbox。将备份存储在主机账户之外,可确保即使在主机账户本身被入侵的灾难性情况下也能恢复数据。
常见问题解答
如何判断我的WordPress网站是否感染了恶意软件?
常见迹象包括:网站将访客重定向到未知或可疑网站、Google在搜索结果中显示"此网站可能有害"警告、托管服务商发送关于CPU或RAM过度使用的警报、public_html 目录中出现陌生PHP文件、Google Search Console报告您未创建的安全问题或垃圾页面,或因密码被更改而无法登录WordPress管理后台。
我可以不用插件手动删除WordPress恶意软件吗?
是的,您可以通过托管控制面板的文件管理器或FTP手动清理恶意软件。过程包括:将WordPress核心文件与WordPress.org的干净下载版本进行比较,搜索包含危险函数(如 eval(base64_decode)、gzinflate 或带 /e 修饰符的 preg_replace)的PHP文件,检查 .htaccess 中的恶意重定向规则,以及扫描数据库中注入的JavaScript或垃圾链接。对于轻度感染,Wordfence或MalCare等安全插件可以自动完成大部分工作。
清理WordPress恶意软件后应该做什么?
清理后,您必须:立即更改所有密码(WordPress管理员、FTP、DirectAdmin、MySQL),将WordPress核心、所有插件和主题更新到最新版本,删除所有未使用的插件和主题,安装Wordfence等安全插件,修正文件权限(目录755,文件644),重新生成 wp-config.php 中的WordPress密钥,并在Google Search Console提交审核请求以从搜索结果中删除恶意软件警告。
共享主机上的恶意软件会传播到同一服务器的其他账户吗?
在配置良好的共享主机中,账户隔离可防止恶意软件直接在账户间传播。但如果恶意软件利用服务器级或PHP漏洞,跨账户感染是可能的。配备Imunify360或类似安全工具的优质共享主机会在恶意文件传播前自动检测并隔离它们。无论如何,您应将任何感染视为紧急情况,立即清理以保护您的网站和服务器环境。
AsiaGB主机 — 完整DirectAdmin方案
AsiaGB主机支持DirectAdmin,提供完整的PHP 8.3与MySQL支持,SSD存储,99%正常运行时间。套餐起价500泰铢/年。
查看主机方案