Your partner in Marketing & IT
Menu

Malware removal Β· WordPress Β· WooCommerce

Site hacked? We clean it, close the hole and hand you a report.

Defaced homepage, redirects to someone else's site, a warning in Google, a hosting account suspended. We remove malicious code from files and from the database, restore the WordPress core from official checksums, close the entry point they used β€” and hand over a report listing every single file we found.

from 159 € net (690 PLN)
🚨 infections handled as priority πŸ” scanning file contents, not dates πŸ“„ written work report
How you know you are infected

Symptoms you cannot wait out

Malicious code on your site does not sit idle β€” it works at the expense of your domain. If even one of the symptoms below looks familiar, every hour counts.

βœ•

Google warns about your site

Search results show "This site may be hacked" and browsers throw up a red warning screen. Traffic drops to almost nothing within hours.

βœ•

Your hosting account is suspended

The host's automated scanner found malicious content and took the site down. It will not lift the block without a cleaned server and a report of what was done.

βœ•

Defaced homepage

Instead of your offer, a stranger's page loads β€” usually gambling, pharmacy or crypto, often in a language you do not speak.

βœ•

Foreign pages in search results

Google shows pages under your domain full of Japanese or Chinese characters and links to shops you have never run.

βœ•

Admin accounts you never created

Unknown accounts appear in the user list β€” or worse, they exist in the database but are deliberately hidden from you.

βœ•

Redirects only on mobile

On a desktop the site looks fine, but visitors from a phone or from Google get thrown onto someone else's domain.

Beware of the apparent calm. The most common pattern we see: the infection sits on the server for days without a single visible sign, right up to the moment the attacker defaces the homepage or the host suspends the account. If you see something in your logs or file list that you cannot explain, it is far cheaper to check now than to explain later how customer data ended up in someone else's hands.

How infections happen

It is not bad luck β€” it is one outdated plugin

Attacks on WordPress are fully automated. Bots scan the internet non-stop for known vulnerabilities and do not care whether you run a million-euro store or a one-page brochure site. The pattern is almost always the same.

Step 1 Β· entry

A hole in a plugin or theme

Usually a vulnerability that allows uploading a file through a form, or running code without logging in. Nobody needs to know your password β€” an unmaintained component is enough.

Step 2 Β· foothold

A web shell

An uploaded PHP file that hands the attacker a file manager and a system console straight in the browser. It is often disguised as a WordPress file or as an image β€” in one of our cases the web shell posed as a .png inside a popular plugin's folder.

Step 3 Β· persistence

Backdoors and hidden accounts

Administrator accounts hidden from the user list, files in the mu-plugins folder that WordPress loads automatically, a keylogger capturing the admin password at login, entries in the database. All so they can come back after your "clean-up".

That is why deleting one suspicious file settles nothing. Here is a real timeline from our own work β€” under three days from the first web shell to a suspended hosting account: β‘  a vulnerability in a file-upload plugin β†’ β‘‘ web shells in the uploads folder β†’ β‘’ a new administrator account β†’ β‘£ four files in mu-plugins (including an admin-password keylogger and three files hiding the fake accounts) β†’ β‘€ a defaced homepage β†’ β‘₯ the host's automated suspension of the account. Cleaning has to cover every layer at once β€” files, core, the mu-plugins folder, the database and the accounts. Otherwise the infection is back within hours, by exactly the same route.

Scope of work

Exactly what we do

A complete clean-up, from the backup to the follow-up scan. We do not tick off "scanned with a plugin" β€” we go through every layer an infection can hide in.

βœ“

Backup before cleaning

A full copy of files and database before we touch anything. There is always something to roll back to.

βœ“

Server log analysis

We establish when and through what they got in. Without it you lock the door and leave the window open.

βœ“

Content-based file scanning

We look for malicious code signatures, not just recent modification dates β€” including inside .png, .jpg, .ico, .css and .js files.

βœ“

WordPress core restore

Clean files from wordpress.org plus checksum verification, without touching wp-config.php or the uploads folder.

βœ“

mu-plugins and plugins

We remove auto-loaded files, counterfeit plugins and leftovers from components that are no longer installed.

βœ“

Database clean-up

Fake admin accounts, injections in content, options left by malicious plugins, orphaned cron events.

βœ“

Password and key rotation

New passwords, new salt keys, every active session invalidated. A stolen password stops working.

βœ“

Closing the entry point

Updating or removing the vulnerable component, blocking PHP execution in uploads, blocking xmlrpc.php.

βœ“

Credentials out of the webroot

Database passwords and keys move outside the public folder, so one leaked file no longer hands over the whole install.

βœ“

Report and follow-up scan

A document listing every file found and every action taken, plus a second audit a few days later.

How we work

Five steps to a clean server

The order is deliberate. First we preserve the current state, then we find the cause, and only then do we clean up β€” because cleaning without finding the entry point buys you a single day.

1

Report and access

We take SSH or FTP access plus the admin panel, run a full backup and assess the scale of the infection.

2

Vector analysis

Server logs and file timestamps. We establish how and when they got in, and what they managed to do.

3

Clean-up

Files, core, mu-plugins, database, accounts. We scan by content until another pass returns nothing.

4

Hardening

Closing the hole, rotating passwords and salt keys, blocking PHP execution and xmlrpc, credentials out of the webroot.

5

Report and re-scan

Documentation of the work plus a second audit a few days later, to confirm nothing has come back.

After every stage you get a note on what was done and what it found β€” you never have to ask where things stand.

From our own work

An industry portal with WooCommerce β€” from a suspended host to a clean server

The call came in after the fact: the hosting provider had already suspended the account because malicious content was found on the server. Below is the real timeline β€” first of the attack, then of the recovery work.

1
vulnerability in a file-upload plugin β€” the entire entry vector
20+
malicious files removed: web shells, backdoors, a keylogger
207
database entries left behind by a counterfeit cache plugin
0
findings in the follow-up audit after the work was done

Timeline

Day 1
Through a known vulnerability in a file-upload plugin, the attacker uploads the first web shell. The site behaves normally; nothing hints at an intruder.
Day 3
Using the web shell, an administrator account appears along with four files in the mu-plugins folder: a keylogger capturing the admin password at login, plus three files hiding the fake accounts from the user list. The filenames impersonated well-known cache and security plugins.
Day 3, 23:27
The homepage is replaced β€” 324 KB of a foreign gambling site, complete with a Google Search Console verification code (an attempt to claim the domain in Google's tools). The host's scanner catches it and suspends the account.
Recovery, part 1
A 1.7 GB backup of files and database. A content-based scan reveals web shells not only in uploads, but also in wp-admin, wp-includes, upgrade and languages. The WordPress core is restored from a clean copy, accounts and database entries cleared, passwords and salt keys replaced.
Recovery, part 2
Findings that a plain "scan the PHP files" pass would have missed: a web shell posing as a .png image inside a popular plugin's folder, a full database management tool hidden under the name wp-polyfill-fetch.min.php, and two web shells in a folder that does not exist in WordPress at all.
Hardening
Closing the entry vector, blocking PHP execution in uploads, blocking xmlrpc, moving database credentials and keys outside the public folder, and reviewing every .htaccess file on the server.
Follow-up audit
A second scan after the work: no new files, no foreign administrator accounts, no attack signatures in the database, no orphaned cron events. The result handed to the client in writing.

Client name and domain available on their approval. The figures and sequence come from the actual reports written during this work.

The side effects of an infection

Google warnings and hosting suspensions β€” we handle those too

Cleaning the server is half the job. The other half is undoing what the infection did to your domain's visibility and to your standing with your hosting provider.

πŸ”Ž

Search Console and domain hijacking

We review security notices and β€” something that is easy to miss β€” check whether the attacker added their own verification of your domain in Google's tools. We found exactly such a code in a real case, inside the defaced homepage. Unauthorised access gets removed.

βœ…

Review request

Once the site is clean we submit a review request in Search Console. The "This site may be hacked" label and the red browser screen normally disappear within a few days of approval.

🈢

Foreign pages in the index

We check how many injected URLs Google managed to index (Japanese keyword spam being the classic case) and request re-indexing of the clean versions so the foreign content drops out of the results.

πŸ”“

Getting your hosting unblocked

We prepare the ticket with a list of removed files and hardening measures applied β€” hosting providers lift suspensions on the strength of that kind of description, not on an assurance that "it is fine now".

Why speed matters: as long as the site is infected, search engines keep indexing more foreign pages and your host keeps collecting more reports. Every day of delay means more URLs to clean out of the index and a slower return to your former rankings. Cleaning the server itself takes the same time on a Monday and on a Friday β€” the difference is what the infection leaves behind in Google.

Pricing

A clear figure before we start

We quote after a short assessment, not halfway through the work. If the infection turns out to be extensive, we say so straight away along with the exact figure β€” instead of padding the invoice afterwards.

Post-hack audit + hardening

A store, a portal holding user data, or a repeat infection.

from 299 € netβ‰ˆ 1 290 PLN Β· one-off

  • Everything from malware removal
  • Log analysis and attack timeline
  • Database checked for attack signatures
  • Entry vector closed, server-level blocks applied
  • Credentials moved out of the public folder
  • Follow-up scan after a few days + audit document
Ask for a quote

Care and monitoring

For those who would rather not go through this twice.

Custom quotemonthly retainer

  • Core, plugin and theme updates
  • Backups with restore testing
  • Periodic post-hack scans
  • Uptime monitoring
  • Incident response without queueing
Ask about care plans

Not sure which case is yours? Tell us what you see on the site and whether your host has already suspended the account. After a short assessment β€” usually within a few business hours β€” we give you a firm price and a deadline.

FAQ

Malware removal β€” frequently asked questions

Cleaning a single standard site usually takes 24–48 hours from the moment we have access. An extensive infection β€” several sites on one account, database backdoors, a repeat break-in β€” can take a few days. We give you a realistic deadline after the first assessment, not a guess at the moment you call.

No. We start with a full backup of files and database, and we restore the WordPress core without overwriting wp-config.php or the uploads folder. Content, orders, customer accounts and media stay exactly where they are. We only remove what does not belong to your installation.

A security plugin detects some known files and helps a great deal preventively, but after a break-in it is rarely enough. A web shell disguised as an image, a backdoor in the mu-plugins folder, an injection in the database, or a database management tool hidden under a WordPress filename β€” these routinely pass a standard scan. That is why we scan by file content and verify the core against official checksums.

Infections return in two situations: the entry point was never closed, or one backdoor was left behind. That is why every clean-up ends with hardening and a follow-up scan a few days later. If an infection returns by the same route after our work, we come back to it at no extra charge.

Yes β€” that is a very common starting point. Hosting providers usually leave FTP or SSH access available while the site is down, or re-enable it for the duration of the work once you ask. We help write that request, and after cleaning we prepare the list of removed files and hardening measures β€” which is exactly what the suspension gets lifted on.

SSH or FTP access, access to the WordPress admin (if it still works) and to the hosting panel. Server logs from the last few days are very useful β€” that is what we reconstruct the attack timeline from. If you do not know where to find any of this, we will walk you through it step by step; you do not need to be technical.

In most cases yes β€” server logs let us identify the vulnerable component, the moment of entry and what the attacker managed to do. It all goes into the report together with the list of removed files. If the logs have already been rotated by the host, we work from file analysis and say so plainly rather than guessing.

WordPress and WooCommerce are our specialism β€” that is where most cases come from and where we have the most established procedures. With other PHP-based systems we can usually help too. Tell us what the system is and we will answer honestly whether we are the right fit, rather than learning on your outage.

Site infected? Do not wait until morning.

Every hour means more foreign pages in Google's index and a higher chance your host pulls the plug. Tell us what you see on the site β€” we will run a quick assessment and say plainly how long the fix takes and what it costs.

Infection reports are treated as priority β€” we usually reply within a few business hours.

Got a question? Looking for a solution?

Write to us β€” we reply quickly and to the point.