WordPress 站长警惕 wp2shell 漏洞:数据库被新增管理员账号,权限直接拉满
7 月 20 日,4414 站长论坛有站长发帖曝光一起 WordPress 安全事件:其站点数据库在夜间被新增了两个以 wp2shell 开头的用户,权限级别为管理员。该事件被论坛命名为 “wp2shell 漏洞” 事件——虽然这并非一个正式的 CVE 编号,但它已经成为近期 WordPress 站长圈中需要高度警惕的攻击标志。一旦数据库里出现 wp2shell 前缀的管理员账号,意味着攻击者已经拿到站点的写权限,站点随时可能被进一步控制。

一、事件特征:数据库里多了 wp2shell 开头的管理员
根据论坛楼主(ID: 只为书生)的曝光:
- 时间发生在晚上;
- 数据库中新增两个用户,用户名以
wp2shell开头; - 这两个用户被赋予了管理员级别权限;
- 站长本人此前并未创建这些账号。
这说明攻击者已经突破了 WordPress 的外层防御,直接获得了能够写入 wp_users 表的权限。管理员的权力有多大?他可以:
- 修改任意文章内容,插入恶意代码或钓鱼链接;
- 安装恶意插件、主题,甚至 WebShell;
- 删除其他管理员账号,独占站点控制权;
- 导出数据库,批量窃取用户信息;
- 利用站点作为跳板,发起更多攻击或发送垃圾邮件。
wp2shell 这个前缀本身很可能是攻击者自动化工具或攻击脚本默认创建的用户名标识,类似早期常见 wpadmins、xmrig、shelladmin 等后门账号命名规律。它的出现,说明这是一起批量化的自动攻击事件,不是针对单个站点的定向入侵。
二、攻击路径分析:wp2shell 是怎么进来的
WordPress 数据库被新增管理员账号,通常有以下几种入口:
| 攻击入口 | 说明 | 典型场景 |
|---|---|---|
| WordPress 插件/主题漏洞 | 未更新的插件或主题存在 SQL 注入、RCE、权限绕过 | 常见于小众插件、破解主题、已停更组件 |
| 管理员密码被撞库/爆破 | 弱密码或与其他站点共用密码被破解 | 管理员密码为 123456、admin 等 |
| 后台登录接口暴露 + 无 MFA | /wp-admin 被扫描爆破 |
默认后台路径、无 IP 白名单、无验证码 |
| 旧版本 WordPress 核心漏洞 | 未升级到最新版 WordPress | 老版本存在已公开的提权或 RCE 漏洞 |
| 数据库账号密码泄露 | 其他站点共用数据库账号、配置文件被下载 | wp-config.php 被读取或数据库密码泄露 |
| 供应链污染/第三方插件后门 | 从非官方渠道下载的插件/主题自带后门 | 破解版主题、来路不明的”优化插件” |
从”新增两个 wp2shell 管理员”这一现象来看,最可能的攻击路径是:
- 攻击者通过已公开的 WordPress 插件漏洞或弱密码爆破进入后台;
- 使用自动化脚本在 WordPress 中插入新用户,用户名统一为
wp2shell开头; - 后续利用这些管理员账号安装插件、写入 WebShell,或横向扫描其他站点。
由于攻击发生在夜间,且一次新增两个账号,自动化脚本作案的可能性极高。
三、紧急排查:你的站点是否也中招
第一步:检查 wp_users 表中的异常账号
登录数据库,执行以下 SQL 语句:
-- 查询所有管理员账号,按注册时间排序
SELECT ID, user_login, user_email, user_registered, display_name
FROM wp_users
WHERE ID IN (
SELECT user_id FROM wp_usermeta WHERE meta_key = 'wp_capabilities' AND meta_value LIKE '%administrator%'
)
ORDER BY user_registered DESC;
重点检查:
- 是否存在用户名以
wp2shell、shell、admin、wpadmin等开头的陌生账号; - 是否有非自己注册但权限为
administrator的账号; - 是否有邮箱异常或注册时间集中在夜间的账号。
第二步:检查近期新增用户
-- 查询最近 7 天注册的用户
SELECT ID, user_login, user_email, user_registered
FROM wp_users
WHERE user_registered >= DATE_SUB(NOW(), INTERVAL 7 DAY)
ORDER BY user_registered DESC;
第三步:检查最近安装的插件/主题
在 WordPress 后台:
- 插件 → 已安装插件:查看是否有不认识或未经自己安装的插件;
- 外观 → 主题:检查是否有陌生主题;
- 重点排查文件创建时间异常的主题/插件目录。
宝塔面板用户可以通过 SSH 执行:
# 查看 7 天内被修改的 PHP 文件(路径按实际站点调整)
find /www/wwwroot/your-site.com/wp-content/plugins -name "*.php" -mtime -7 -ls
find /www/wwwroot/your-site.com/wp-content/themes -name "*.php" -mtime -7 -ls
# 查看 7 天内被新增的文件
find /www/wwwroot/your-site.com -mtime -7 -type f | head -50
第四步:检查后台登录日志
如果安装了安全插件(如 Wordfence、All In One WP Security),查看登录日志中是否有:
- 来自陌生 IP 的成功登录;
- 大量失败登录后突然成功;
- 夜间非工作时间的登录记录。
第五步:检查服务器后门
攻击者拿到管理员权限后,通常会安装 WebShell 或修改主题文件维持权限。重点检查:
# 检查主题/插件中的可疑 PHP 函数(这些函数常用于 WebShell)
grep -r -E "(base64_decode|eval\(|system\(|exec\(|shell_exec\(|file_put_contents|passthru)" /www/wwwroot/your-site.com/wp-content/ 2>/dev/null | head -30
四、紧急处置:发现 wp2shell 账号后怎么办
如果你发现数据库中已经存在 wp2shell 开头的管理员账号,按以下顺序处理:
1. 立即删除异常管理员账号
通过数据库执行:
-- 先查看异常用户的 ID
SELECT ID FROM wp_users WHERE user_login LIKE 'wp2shell%';
-- 删除该用户及其元数据(将下面 ID 替换为实际值)
DELETE FROM wp_usermeta WHERE user_id = 123;
DELETE FROM wp_users WHERE ID = 123;
注意:删除前建议先用
mysqldump备份wp_users和wp_usermeta表,以防误删正常用户。
2. 修改所有管理员密码
在 WordPress 后台:
- 用户 → 所有用户:为所有管理员账号设置高强度新密码;
- 密码建议使用 16 位以上随机字符,包含大小写、数字和符号;
- 不要多个站点使用同一套密码。
3. 检查并清理恶意插件/主题
- 删除所有不认识、未使用或来路不明的插件和主题;
- 对保留的插件/主题,重新从官方仓库下载覆盖安装,确保文件未被篡改。
4. 检查 wp-config.php 和数据库配置
- 确认
wp-config.php没有被篡改,尤其是AUTH_KEY、SECURE_AUTH_KEY等安全密钥; - 如果怀疑密钥泄露,建议重新生成一组新密钥并替换;
- 检查数据库账号是否被共用,必要时修改数据库密码。
WordPress 官方提供了密钥生成器:
# 访问 https://api.wordpress.org/secret-key/1.1/salt/ 生成新密钥
# 将 wp-config.php 中对应部分替换
5. 升级到最新版 WordPress 和插件
- 仪表盘 → 更新:将 WordPress 核心升级到最新版本;
- 将所有插件、主题更新到最新版;
- 删除长期未更新、已停更的插件。
6. 启用后台登录保护
- 修改默认后台登录路径
/wp-admin; - 限制后台访问 IP(Nginx 示例):
location /wp-admin {
allow 192.168.1.0/24; # 你的办公网络
deny all;
}
location /wp-login.php {
allow 192.168.1.0/24;
deny all;
}
- 安装登录失败锁定插件(如 Limit Login Attempts Reloaded);
- 为高权限用户启用双因素认证(2FA)。
五、防护加固:防止下一次被入侵
1. 最小权限原则
- 只给真实需要的用户管理员权限;
- 编辑、作者等角色不要赋予安装插件、修改主题的能力;
- 前台注册用户的默认角色设为”订阅者”,不要是”作者”或”编辑”。
在 WordPress 后台设置:
- 设置 → 常规 → 新用户默认角色:选择”订阅者”
2. 数据库账号权限最小化
WordPress 只需要对数据库执行 SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP(升级时需要)等操作。如果不需要在 WordPress 内安装新插件,甚至不需要 CREATE 和 DROP 权限。
-- 示例:给 WordPress 数据库账号最小权限
REVOKE ALL PRIVILEGES ON *.* FROM 'wp_user'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON wp_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
3. 在边界部署 WAF
WordPress 是攻击者的重点目标。如果站点暴露在公网,强烈建议接入 Web 应用防火墙。以 百度云防护 为例,可以:
- 拦截针对 WordPress 登录口的爆破请求;
- 拦截已知插件漏洞的利用 Payload;
- 对 SQL 注入、XSS、RCE 等通用攻击进行识别和阻断;
- 提供虚拟补丁能力,在插件官方补丁发布前临时封堵漏洞。
通过主机吧购买百度云防护专业版可享 7.5 折优惠(299 元/月)。对于承载业务或客户数据的 WordPress 站点来说,这层防护成本远低于一次被入侵后的数据恢复和声誉损失成本。
4. 定期备份与监控
- 使用宝塔面板或 UpdraftPlus 等工具设置每日自动备份;
- 备份至少保留 7 天,遇到入侵可快速回滚;
- 在服务器上设置监控告警,发现异常文件新增或数据库用户变更时通知管理员。
宝塔面板用户可在”计划任务”中设置每日备份:
# 宝塔计划任务:每日自动备份站点和数据库
# 路径:宝塔面板 → 计划任务 → 添加任务
# 选择"备份网站"和"备份数据库",频率设为每天
六、主机吧看法
wp2shell 这个事件再次说明,WordPress 的攻击已经从”单点入侵”演进到”批量自动化养殖”。攻击者不会只控制你一个站,而是用一个漏洞扫描成千上万个 WordPress 站点,批量创建后门账号,再按需利用。
这种攻击最可怕的地方不是技术多高超,而是效率极高。一个未更新的插件、一个弱密码、一个暴露的后台,几秒钟就能让你站点沦陷。等你发现数据库里多了两个管理员账号时,攻击者可能早就在里面待了几天。
给站长的建议简单粗暴但有效:
- 每周看一次更新提醒,WordPress 核心、插件、主题有更新就升;
- 每月做一次用户账号审计,删掉不用的账号,检查权限是否合理;
- 永远不要装破解版主题/插件,免费的破解版后面往往有贵得多的代价;
- 后台至少加个 IP 白名单或双因素认证,别用默认路径裸奔在公网上;
- 备份!备份!备份! 被入侵了别慌,干净的备份能救命。
最后说一句:WordPress 本身没问题,出问题的是使用方式。你把 WordPress 当企业官网用,就请按企业级的标准去对待它。等 wp2shell 账号出现在你的数据库里,那就不是几百块钱能解决的问题了。
