SEO / WordPress 安全工具
使用 AI Agent 扫描 WordPress 恶意代码并彻底清除 malware 的方法
当一个 WordPress 网站被怀疑感染恶意代码时,问题不仅仅是删除几个异常文件。Malware 通常分散存在于源代码、数据库、服务器日志、cron 任务、异常用户以及 . 中的隐藏文件 wp-content. 此工具页面旨在帮助技术团队按照正确流程处理,减少遗漏并降低清理后再次被入侵的风险。.
这个工具是用来做什么的?
这是一个实战清单,适用于正在处理疑似被攻击的 WordPress 网站的团队。它引导用户经过 3 个阶段:确认责任、使用 AI 在本地扫描诊断,以及按合理顺序处理问题。每一步都附有简要说明和示例 prompt,用于让 AI Agent 直接读取源代码、数据库或访问日志。.
在开始之前,确定该站点是否属于处理范围。.
收集源代码、数据库和日志到本地供 AI Agent 扫描。.
检测恶意文件、异常用户、cron 任务以及残留的持久化迹象。.
为什么应该使用 AI Agent 来扫描 WordPress malware?
大多数 WordPress 问题并不只存在于单个文件。黑客可能在主题中植入后门,在 uploads 中隐藏 shell,在数据库中创建新的管理员用户,或在 option 中添加重定向。如果手动检查,由于数据量过大,很容易遗漏。AI Agent 可以快速读取整个本地工作区,并按标准格式总结可疑点。.
清单中的主要流程
阶段 A: 确认网站是否属于团队的处理责任范围。.
阶段 B: 使用 AI Agent 扫描源代码、数据库和访问日志。.
阶段 C: 备份、锁定网站、更改凭证、重置核心、扫描 wp-content, 删除异常用户、检查 cron 任务并进行交接。.
工具的差异点
此页面不仅列出需要完成的事项。它还跟踪处理进度,提供现成的示例 prompt,建议优先检查的文件和数据表,同时帮助团队避免遗漏关键步骤,例如更改数据库密码、检查 cron 任务或在清理后重新验证 Google Search Console。.
什么时候应该使用?
网站自动重定向或出现安全警告。.
uploads 中存在异常 PHP 文件或主题/插件被异常修改。.
Search Console、访问日志或数据库中出现污染迹象。.
简而言之,这是一个完整的工作流程,用于系统化处理 WordPress malware,降低遗漏后门的风险,并提高首次彻底清理的成功率。.
确认问题
A.01
网站是否托管在 DPS?
如果不是在 DPS 托管,那这可能不是我们团队的工作。在动手前先询问。.
A.02
网站是否属于 DPS 正在运行的项目?
SEO、广告……如果有正在运行的项目,团队就有责任处理。.
收集工件与 AI 扫描
B.01
收集源码、数据库、日志,然后让 AI agent 进行本地扫描
在一个环节内完成:将源代码、数据库和日志下载到电脑;在 IDE 中打开它们;然后让 AI agent 直接浏览本地工作区 (workspace) 进行扫描。.
如果源码太重,优先下载 root 源码 + wp-content + wp-config.php + .htaccess + index.php. 。目标是保留足够的证据,让 agent 能够读取全局情况。.
这是诊断步骤。完成后必须得出:哪些文件可疑、哪些数据库行受感染、哪些日志显示了攻击载体 (vector),以及哪些文件/路径可能是入侵点。.
提示词 — 扫描源代码
你是一位 WordPress 安全专家。我已经将一个疑似被黑的 WordPress 网站的全部源代码下载到电脑并用 IDE 打开。请直接浏览此本地工作区。\n\n请分析并返回:\n\n1. 危险文件\n – 包含以下内容的文件:eval(base64_decode), gzinflate, str_rot13, assert(), preg_replace /e, system(), exec(), passthru()\n – 位于 uploads/ 目录下的 .php 文件(不寻常)\n – 随机命名或伪造 WP 核心名称的文件(例如:wp-logln.php, hello.php)\n\n2. 最近修改的文件\n – 列出修改时间戳 (timestamp) 与其他文件相比异常的文件\n – 优先级:functions.php, wp-config.php, .htaccess, index.php\n\n3. 具体恶意代码\n – 提取可疑代码段,解释其功能\n – 分类:后门 shell / 垃圾信息注入 / 重定向 / 凭据窃取 / 加密货币挖矿\n\n4. 入侵载体结论\n – 根据位置和恶意代码类型,攻击载体可能是什么?\n – 哪个插件/主题最有可能是入口点?\n\n格式:标题清晰,每个危险文件需注明路径 + 代码行 + 严重程度 (CRITICAL / HIGH / MEDIUM)。.
提示词 — 扫描数据库
你是一位 WordPress 安全专家。我已经将一个疑似被黑网站的 SQL 导出文件下载到电脑并用 IDE 打开。请直接浏览此本地文件。\n\n请分析以下表并返回:\n\n1. wp_options\n – siteurl, home 是否被更改或插入重定向?\n – active_plugins 是否有陌生插件(路径异常,wp-content 中不存在的插件)?\n – 是否有任何 option 包含可疑的 base64, eval, iframe, ?\n – admin_email 是否被更改?\n\n2. wp_posts / wp_postmeta\n – 哪些文章包含垃圾关键词(viagra, casino, pharma, 카지노, 药)?\n – 哪些文章有隐藏的 iframe、隐藏链接(display:none, font-size:0)?\n – Post_status = publish 但标题或内容异常?\n\n3. wp_users / wp_usermeta\n – 哪些最近创建的用户具有 administrator 角色?\n – user_registered 时间戳是否异常?\n – 是否有看起来像机器人的 user_login(随机字符串、伪造邮箱)?\n\n4. 结论\n – 攻击类型:药品黑客攻击 (Pharma hack) / 日语 SEO 黑客攻击 / 后门用户 / Option 注入?\n – 感染程度:受影响的记录数量?\n – 清理数据库需要做些什么?\n\n格式:表格形式列出受感染的用户/选项,注明表 + 字段 + 可疑值。.
提示词 — 扫描访问日志
你是一位 WordPress 安全专家。我已经将 Web 服务器的访问日志 (access log) 和/或错误日志 (error log) 下载到电脑并用 IDE 打开。请直接浏览此本地文件。\n\n请分析并返回:\n\n1. 事件时间轴\n – 带有攻击迹象的第一个请求出现在什么时候?\n – 从扫描 → 漏洞利用 → 后门上传的事件链是如何发生的?\n\n2. 被利用的端点 (Endpoint)\n – xmlrpc.php:是否被暴力破解或 multicall 滥用?\n – wp-login.php:请求量是否异常?\n – admin-ajax.php:是否有异常 action?\n – 上传端点:是否有 PHP 文件上传成功?\n – 哪些 URL 返回 200 但看起来像 shell 路径?\n\n3. 攻击 IP\n – 哪些 IP 行为异常(扫描多个路径、持续 POST)?\n – 列出前 10 个可疑 IP + 请求数 + 行为\n\n4. 持久化迹象\n – 首次攻击后,是否有针对后门文件的后续请求?\n – 黑客返回了多少次,来自哪个 IP?\n\n5. 入侵载体结论\n – 基于日志分析,概率最高的攻击载体是什么?\n – 哪个插件/路径是入口点?\n\n格式:按时间顺序的时间轴,表格形式的 IP 列表,列表形式的端点及 HTTP 方法 + 状态码。.
确认当前防御状态
B.02
检查 DPS Shield WordPress Security 插件
访问 tênweb.com/admindps 进行检查。能进去 = 已安装 DPS Shield。不能进去 = 未安装。.
没有 DPS Shield = 被黑风险高达 80%。这是 DPS 的内部安全插件。.
下载插件:
github.com/hienhoceo-dpsmedia/dps-wordpress-security
B.03
检查服务器端防火墙/WAF 是否开启
检查应用型 WAF 或服务器端流量过滤层是否已开启并配置正确。.
开启服务器端 WAF = 在流量进入 WordPress 之前减少恶意流量。.
准备
C.01
通知团队
告知大家你正在处理。避免工作冲突或方便需要他人配合。.
C.02
备份源代码和数据库
在改动任何东西之前进行完整备份。如果没有 UpdraftPlus,请通过主机面板手动备份。.
即使网站已受感染,仍需保留原始版本以便对比或恢复内容。这一步不同于 B.01–B.02 —— 这是归档备份,不是为了扫描。.
C.03
锁定网站 (Suspend)
进入主机面板或 VPS 脚本,挂起 (suspend)/锁定域名。.
黑客在你处理期间无法继续访问。在继续后续步骤前立即执行此操作。.
干预服务器
C.04
重启 PHP
CyberPanel: 切换到另一个 PHP 版本,然后再换回旧版本。.
cPanel: 同上,来回切换。.
cPanel: 同上,来回切换。.
此命令强制服务器杀掉内存中运行的所有 PHP 进程,切断黑客正在后台运行的连接。.
C.05
更改数据库密码
为数据库创建新密码,并立即更新到文件 wp-config.php.
黑客经常保存数据库信息以便日后返回。更改密码可以切断这条路径。.
C.06
更改 FTP / SFTP / SSH 密码
更改所有文件系统访问凭据:主机面板中的 FTP 账户,如果直接使用 VPS 则更改 SSH key 或密码。.
许多 WordPress 被黑案例源于 FTP 凭据泄露(客户端电脑上的恶意软件、未更改的旧凭据)。如果只更改数据库密码而不更改 FTP,黑客会立即再次进入。.
清理源代码
C.07
检查 wp-config.php
打开 wp-config.php 仔细阅读:检查文件的开头和结尾,查看是否有异常代码段、eval、base64、异常 include。无需检查 .htaccess 因为 C.08 步骤重置 WP 会将其删除,且 C.17 保存固定链接会重新创建一个干净的文件。.
wp-config.php 是最容易被插入恶意代码的文件。在继续之前确认其已清理。.
C.08
将 WordPress 源代码重置为最新版本
删除所有旧的 WordPress 文件,重新安装最新的干净版本。.
保留:目录 wp-content, 、文件 wp-config.php, ,以及其他网站子目录(如果有)。.
C.09
下载 wp-content 并让 AI Agent 全面扫描
下载整个目录 wp-content 到本地,然后让 AI Agent(Claude, Codex, Gemini)进行扫描。扫描范围包括:
• uploads/ — 查找隐藏在图片/媒体中的 .php 文件
• themes/ — 包括正在使用的和未使用的主题
• plugins/ — 所有插件,包括已禁用的插件
• mu-plugins/ — 最常被忽视的部分
• Drop-in 文件: advanced-cache.php, object-cache.php, db.php
• uploads/ — 查找隐藏在图片/媒体中的 .php 文件
• themes/ — 包括正在使用的和未使用的主题
• plugins/ — 所有插件,包括已禁用的插件
• mu-plugins/ — 最常被忽视的部分
• Drop-in 文件: advanced-cache.php, object-cache.php, db.php
要求 Agent 查找: eval, base64_decode, gzinflate, shell_exec, assert, system, exec, passthru, preg_replace /e. 。打开每一个命中的文件进行人工确认。.
WP 核心重置不会触碰 wp-content. 。这里最容易残留 Web Shell、Drop-in 和持久化后门。.
C.10
生成新的安全密钥(Security Key)和盐(Salt)
访问链接: https://api.wordpress.org/secret-key/1.1/salt/
全部复制,粘贴到 wp-config.php 替换旧代码段。.
全部复制,粘贴到 wp-config.php 替换旧代码段。.
所有已登录的用户(包括黑客)将立即被强制注销。.
C.11
删除不使用的主题和插件
清理 WordPress 中所有不必要的内容。包括如果不使用的默认主题(Twenty*)。.
代码越少 = 漏洞越少。每个不使用的插件都是一个潜在的弱点。.
C.12
重置文件权限
在托管面板中通过 SSH 或终端执行以下 3 条命令:
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod 600 wp-config.php
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod 600 wp-config.php
错误的文件权限(777)是导致恶意脚本能够自动写入服务器的常见原因。在重新上线网站前将其重置为标准权限。.
用户与访问控制
C.13
删除数据库中的异常用户
进入 phpMyAdmin → 表 wp_users, ,删除不属于团队的异常用户。与 Agent 在 B.05 中报告的用户列表进行比对。在重新上线网站前执行此步骤,以确保不再存在异常管理员。.
如果在取消暂停(unsuspend)之后才操作,黑客可能会在网站开启且异常用户依然存在的间隙立即重新登录。.
C.14
关闭自由注册(Open Registration)
进入 设置 → 常规, ,取消勾选 “任何人都可以注册”. 。如果网站不需要注册功能,请完全关闭。.
自由注册允许机器人自动创建用户,这是许多权限提升类攻击的第一步。.
C.15
更改所有管理员账号的密码
为所有管理员账号更改强密码。使用密码管理器生成 20 位以上的随机密码。.
结合 C.10 中的新安全密钥,包括黑客在内的所有旧会话都将失效。.
恢复与配置
C.16
重新上线网站(Unsuspend)
进入托管面板,取消对域名的暂停。网站恢复运行。仅在删除异常用户(C.13)和更改管理员密码(C.15)之后才执行此操作。.
C.17
保存固定链接 (Permalink)
进入 WP 管理后台,前往 设置 > 固定链接, 点击 保存更改.
重置 WordPress 会导致文件丢失 .htaccess. 。保存固定链接会重新生成此文件。安全插件需要 .htaccess 才能正常运行。.
C.18
重新安装必要的安全插件
安装最新版本并完成完整配置。优先安装 DPS Shield,因为它需要上一步中的 .htaccess 。.
C.19
更新其余的主题和插件
更新时需谨慎。可能会导致版本冲突并使网站报错。每更新一个插件后都要仔细测试。.
C.20
检查 Cron 任务 / 计划任务
检查 WP 管理后台 > 工具 > 计划动作,或运行 wp cron event list 以查找异常任务,防止恶意代码自动重新激活。.
黑客通常会设置 WP-cron 或服务器 cron,以便在 shell 被删除后重新下载。这是最常见的持久化机制。.
C.21
检查同级子目录
检查父目录下是否有其他网站。如果有,这些网站也有被感染的风险。.
同级目录没有 open_basedir 保护。该网站被黑会立即传染给父目录下的其他网站。.
后期检查与交付
C.22
验证/测试网站正常运行
在通知客户之前,先自行快速检查:
• 首页加载正常,不再出现 Chrome/浏览器红屏警告
• 访问部分内容页面,无异常重定向
• 可以登录 WP Admin
• 主要功能(表单、菜单、搜索)运作正常
• 在移动端进行检查
• 首页加载正常,不再出现 Chrome/浏览器红屏警告
• 访问部分内容页面,无异常重定向
• 可以登录 WP Admin
• 主要功能(表单、菜单、搜索)运作正常
• 在移动端进行检查
在未自行验证完成前不要通知客户。如果遗漏某些步骤,重置 WP 有时会导致布局混乱或固定链接失效。.
C.23
确认 Google Search Console
检查 Google Search Console 查看网站是否仍被标记为危险,处理完毕后提交申诉请求。.
如果网站被黑已久,即使站点已清理干净,Google 可能仍会显示警告。提交审核是移除警告的必要步骤。.
C.24
通知客户/利益相关者
向客户或利益相关者报告事故情况、已处理的步骤以及后续需要关注的事项。.
如果是客户网站,不要只通知内部团队。需要向负责人更新处理结果和安全状态。.
处理进度
0
/ 29 项
尚未开始
A 确认
0/2
B 诊断
0/3
C 处理
0/24
最近活动
暂无活动。.
