查 wp_users 发现三个账号的 user_pass 字段完全相同,都是 $P$B 开头同一串。问下来是建号时统一发的初始密码,两年没人改。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,批量建号时把同一个初始密码写死,密码哈希自然一样。知道其中一个就等于知道另外两个,撞库时按哈希分组还能一次命中多个账号。

碰到「弱口令复用」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

wp db query "SELECT user_pass, GROUP_CONCAT(user_login) u, COUNT(*) c
  FROM wp_users GROUP BY user_pass HAVING c > 1;"
wp user update editor01 --user_pass="$(openssl rand -base64 18)"

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

具体做法是,先按 user_pass 分组,把哈希相同的账号列出来;通知本人重置,或者直接用 wp user update 生成随机密码强制下发;后台加一条规则,首次登录必须改密码,初始密码设成一次性。

最后用这个标准收尾,再分组查询没有重复哈希,几个编辑账号都能用新密码登录。

作者 9823189