Web threats

PHP backdoors leave a hidden way back into a website.

PHP backdoors are files or injected hooks that give an attacker continued access to a website. They can expose a webshell, grant a WordPress administrator session, hide an account, log passwords or load more code. Since 1 August we have matched PHP-backdoor code on 1,134 sites.

PHP backdoors in numbers

Since 1 August, when our rule-match records begin, counted on 12 November 2026. How we count.

Sites with PHP-backdoor code1,134
Sites with a match in the last 30 days820
New sites in October218
Still serving a PHP backdoor when recaptured at least 25 days later515 of 565 sites (91%)
Sites running WordPress (captured since 25 September)75%
Named kits3

Kits compared

Kits with the most sites in the last 30 days first. One site can carry more than one kit. The last column counts sites recaptured at least 25 days after their first match, where there are at least 50.

KitLast 30 daysAll sitesFirst matchStill serving 25 days on
FleetSync7681,06891% of 552
StainedHeart45

What the infected sites run

696 of the 922 sites we captured since 25 September 2026 run WordPress (75%). Shares below are of the WordPress sites, by the version and plugins on each site's latest capture.

WordPress versionSitesShare
WordPress 7.140358%
WordPress 7.0264%
WordPress 6.9609%
WordPress 6.8233%
Other releases from 6.07110%
Older than 6.0456%
Rare or unreadable version6810%
PluginSitesShare
elementor31145%
contact-form-720830%
elementor-pro13519%
woocommerce10515%
revslider9313%
google-site-kit6910%
essential-addons-for-elementor-lite538%
header-footer-elementor487%
js_composer456%
elementskit-lite426%
wordfence61%

Smart contracts

One of these kits reads 3 contracts on Ethereum. Today they return 3 destinations.

Open the EtherHiding contract tracker

A PHP backdoor is code planted on a website to preserve access after the first break-in. It can sit in a standalone webshell, a plugin, a theme or an injected WordPress hook, then act when a request, login or scheduled task reaches it.

compromised website
  -> planted PHP file, plugin or hook
  -> hidden request, login event or scheduled poll
  -> administrator session, credential log or file change
  -> backdoor remains in the site for the next request

Webshells and backdoor loaders

A webshell exposes a request-driven action through a PHP file. A backdoor loader can blend into WordPress and ask a controller for work. FleetSync reads its controller through eth_call, sends a site inventory and polls for tasks that execute supplied PHP or write files. Its ea_fleet_sync cron event keeps the polling routine scheduled, and its theme-writing task plants an autologin hook in functions.php. SC Backdoor reads controller addresses from Ethereum with selector 0x3bc5de30, generates administrator cookies and restores its plugin through planted files and database state.

SUGA Mini Uploader is a small upload webshell that prints CVE-UP and ALREADY markers above its form, which makes it easy to spot in a response.

The same habits reach servers that are not WordPress. A script run after gaining root on FreePBX servers adds several accounts with user ID 0, drops Base64-encoded PHP webshells, reinstalls itself from the root and asterisk crontabs and rc.local, stops fail2ban, turns off the FreePBX firewall with fwconsole firewall disable and fetches k.php from 111.223.32[.]50.

Small hooks can provide the same lasting access. FleetSync's // _ea_al snippet accepts ?al=true, selects an administrator or editor and grants a logged-in session. Another plugin creates an administrator, hides both the plugin and user, then sends the new credentials to a remote endpoint.

Hidden accounts and password logs

A hidden WordPress administrator can disappear from several views at once. The code we detect filters user queries, the REST API, XML-RPC, user sitemaps, the administrator list and the displayed account count. Checking only the Users screen can miss it.

We also match an authentication hook that records successful WordPress usernames and passwords in a file disguised as an image upload. The website can keep working normally while each valid login adds another line.

What we see across infected sites

MonthNew sites
September807
October218
November so far109

75% of the PHP-backdoor sites captured since 25 September run WordPress. Of those, 58% run WordPress 7.1. Of the 565 sites recaptured at least 25 days after their first match, 515 still served PHP-backdoor code (91%).

Finding and removing the planted code

Compare the entire site with trusted releases and a known-good deployment. Check:

  • WordPress core, plugins, themes and must-use plugins for added PHP
  • uploads for PHP files or files whose contents do not match their extension
  • scheduled events such as ea_fleet_sync, theme files, wp-config.php and server configuration
  • // _ea_al autologin hooks in every installed theme's functions.php
  • administrator and capability records directly in the database
  • plugins that disappear from the normal plugin list
  • login hooks that write usernames or passwords into uploads
  • unexpected PHP source printed into an HTML response

Remove every copy of the backdoor and restore changed files from trusted sources. Review site and hosting users, rotate WordPress and hosting credentials, invalidate active sessions, clear caches and inspect adjacent sites under the same hosting account.

Kits

FleetSync

768 sites in the last 30 days

FleetSync is a WordPress backdoor that polls a controller for work and writes an autologin hook into theme files.

StainedHeart

4 sites in the last 30 days

StainedHeart is a PHP credential logger planted in WordPress authentication.

SC Backdoor

SC Backdoor is a WordPress implant that reads its controller from an Ethereum contract, generates administrator cookies and repairs deleted copies of itself..

Try the feed for 14 days.

Request a trial and we'll send you a live API key, with the same feed, removals and reasons a customer gets.