Ranked by how often each route actually appears
How WordPress Sites Get Broken Into, Ranked by Frequency
Identify how a WordPress site was broken into, ranked by how often each route actually appears. Filter the index by the symptom in front of you - defacement, spam pages, redirects to another domain, a Safe Browsing warning, an administrator account nobody created - and it returns the attack patterns that match, the usual entry route, and what removal genuinely involves. Drawn from 500+ recoveries.
WordPress sites are compromised through credentials, outdated or abandoned plugins, and hosting configuration that lets uploaded files execute. Core is rarely the entry route. Each attack pattern below carries its symptoms, its usual entry point, and what removal involves.

- brute force attack Identify a brute force attack on a WordPress login by what it leaves behind: repeated failed sign-ins from…
1 pages
Symptoms first, names second
Threat references are usually organised by attack name, which is the wrong way round for whoever is using one. Nobody arrives knowing they have a pharma hack. They arrive because Google is showing pages they never wrote, or the site redirects on mobile only, or a customer reported a warning.
The index above is filtered by symptom for that reason. Start from what is visible and it returns the patterns that produce it – frequently more than one, which is itself worth knowing before committing to a fix.
Three routes account for nearly all of it
Across five hundred recovered sites the entry point is almost always one of three things, and none of them is a flaw in WordPress.
Credentials. A reused administrator password from an unrelated breach, or one weak enough to guess. No vulnerability is involved and no patch prevents it.
An outdated or abandoned plugin. Code with a public advisory and no available fix, or a fix nobody applied. Abandonment is the harder case, because there is no update to install.
Executable uploads. Hosting that allows PHP to run inside wp-content/uploads turns a minor file-upload flaw into a persistent backdoor.
Why cleaned sites get reinfected
The most common thing we are called about is a site cleaned two weeks earlier and infected again.
It is nearly always the same story: the payload was removed and the way in was left open. Malware on WordPress persists in more places than the file system – injected rows in the database, administrator accounts nobody created, scheduled tasks, must-use plugins – and a cleanup that only replaces files misses most of them.
Every page in this section names the entry route alongside the removal, because removal without it buys a fortnight.
Reading this before anything happens
This section is written for an incident and is considerably cheaper to read outside one.
Each pattern names the configuration that permits it. Unique passwords and two-factor close the credential route. A quarterly plugin audit closes the abandoned-code route. Denying PHP execution in the uploads directory closes the third, and it does so against vulnerabilities that have not been discovered yet.
Three changes, none of them expensive, covering the routes behind most of the recoveries this index is built from.
What this index is counted from
The patterns here are the ones that turn up repeatedly in real recoveries, not a taxonomy copied from a vendor’s threat feed. A feed lists every technique that exists; a recovery log records which ones actually arrive at a small WordPress site, and the two are not the same shape.
What arrives is dull and repetitive. A credential reused from a breach on an unrelated service. A plugin the owner stopped updating because it still worked. A file written into an uploads directory that executes PHP because nothing told it not to. Sophisticated attacks against WordPress exist, and they are not what takes a plumbing company’s booking site offline.
That shapes the defence, which is unglamorous for the same reason. No product closes these. Each is a configuration decision, made once, that stops being a decision afterwards – exactly the kind of work that gets deferred forever on a site nobody owns the upkeep of.
Every entry names the route in, the evidence that identifies it, and the change that closes it. Where an incident is happening now rather than being read about, start from the symptom rather than the name.
When it needs handing over
security serviceScan any WordPress site for the exposures attackers actually use — version disclosure, user enumeration, open XML-RPC, missing headers, outdated plugins with known CVEs. Then we…
Related pages
Questions people ask before calling
How do WordPress sites actually get hacked?
Through credentials first - reused or guessed administrator passwords - then outdated and abandoned plugins, then hosting configuration that allows uploaded files to execute. WordPress core itself is rarely the entry route.
How do I know which attack this is?
Start from the symptom rather than the label. Filter the index above by what you are seeing and it returns the patterns that match, because the same symptom frequently has several possible causes.
My site was cleaned and got infected again. Why?
The cleanup removed the payload and left the entry route open. That is the single most common reason a site arrives here twice, and it is why every page in this section names the way in as well as the removal.
Is this section relevant if nothing has happened?
Yes, and it is cheaper to read now. Each pattern names the configuration that permits it, and those are the changes that prevent the incident rather than the ones that follow it.
How current is this?
Every document here is reconfigured on a six-month cycle. Attack patterns move, and a threat reference that is not revised is worse than none because it directs attention at yesterday's routes.