Hidden administrators
Malware can filter its accounts out of the WordPress users screen. Compare what the admin panel shows with the actual users table in the database before trusting the list.
Guide · Rogue administrators
A user with full administrator rights has appeared in your WordPress user list — a name nobody recognizes, often with a throwaway email address. Accounts do not create themselves: something with code execution or a registration flaw created it, which means the account is one visible piece of a compromise. What you do in the next hour decides whether the incident gets investigated or merely hidden.
Published Last reviewed
What it means
Rogue administrators are created through an exploited plugin or theme flaw, an abused registration or REST endpoint, a stolen credential, or — most commonly — by malware already running on the site that wants a reliable way back in. The account is persistence: even if every infected file is cleaned, the attacker logs back in tomorrow.
That is also why deletion alone fails. The mechanism that created the account usually survives it, and many infections recreate their administrator within hours — sometimes with a different name, sometimes hidden from the users screen entirely.
Check thoroughly
Malware can filter its accounts out of the WordPress users screen. Compare what the admin panel shows with the actual users table in the database before trusting the list.
A subscriber or customer account silently granted administrator capabilities in usermeta draws no attention in a quick review.
Since WordPress 5.6, any administrator can carry API credentials that survive a password change. Review and revoke them per user.
Password changes do not end existing sessions by themselves. Force every user to log in again as part of the response.
FTP and hosting-panel users, database accounts, and SSH keys created around the same date extend the same foothold beyond WordPress.
Respond
Account details, logs, a database export, and timestamps — before any deletion or cleanup changes the picture.
WordPress users against the database, hosting panel, FTP, SSH, and database users. Remove what cannot be vouched for; downgrade what does not need administrator rights.
All administrator passwords, the hosting panel, database, and salts/keys in wp-config.php — forcing all sessions to re-authenticate.
Logs around the registration time usually point to the exploited component or backdoor. This is the step that distinguishes removal from investigation.
Treat the site as compromised: verify core, plugins, themes, database, and scheduled tasks, then close the entry path the evidence supports.
If it returns
If the rogue administrator reappears after deletion and password rotation, the creating mechanism is still on the site — a backdoor file, an injected database routine, a scheduled task, or a still-vulnerable component. At that point stop repeating the deletion and investigate the recreation: what ran, when, and with what access.
That situation is exactly the reinfection pattern covered in the repeat-hacking guide, and the point where professional incident response usually becomes cheaper than another month of whack-a-mole.
Common questions
Verify before assuming compromise: ask your developer and host, and check whether a recently installed plugin documents creating a service account. An account nobody claims, with a generic name and free-mail address, should be treated as hostile.
Unknown. Deletion removes the visible symptom, not the mechanism that created it. Without an account audit, credential rotation, and a look at how it was created, you have no evidence either way — and silence for a few days proves little with cloaked infections.
Review changes made under the account before deciding: content edits, new plugins, exported data. WooCommerce stores should assume customer data was readable during the window and act according to their notification obligations.
Query the database directly (or have your host do it): list users with administrator capabilities from the usermeta table and compare against the admin panel. A mismatch confirms active malware filtering the list.