Initial assessment without passwords Quote before intervention One accountable specialist from start to finish

Persistence Reinfection

A Vulnerable Plugin Was Patched but the Backdoor Remains

Clean post-exploitation persistence after patching a vulnerable WordPress plugin by reviewing files, users, cron, database and hosting access.

Updating a vulnerable plugin closes the known entry point for future requests. It does not remove files, users, scheduled tasks or stolen credentials created while the vulnerability was open.

Treat patching and post-exploitation cleanup as two separate stages.

Preserve the vulnerable state details

Record plugin name, old/new versions, update time and the period when exposure existed. Save provider/security alerts and relevant access logs.

Keep an offline copy of the old plugin and suspicious files for analysis, but remove vulnerable public execution after evidence is captured.

Do not reinstall the old version on an internet-facing staging site to reproduce exploitation.

Establish what the vulnerability allowed

Consult the vendor’s official advisory and reputable vulnerability information. Determine whether exploitation could upload files, create users, modify options, read configuration or execute PHP.

Use that capability to set investigation scope. An unauthenticated file upload demands different checks from an administrator-only settings issue.

Do not assume the published proof of concept lists every attacker action.

Search for post-exploitation artefacts

Review recently modified files, PHP inside uploads, unknown plugins/must-use plugins, wp-config.php, .htaccess and core changes.

Inspect administrators, application passwords, cron, Action Scheduler and database scripts/options. Search for external domains or filenames identified in logs.

Analyse suspicious content offline; do not browse backdoor URLs.

Build an exposure-specific indicator set

Collect request paths, parameters, source addresses, filenames and timestamps from the vendor advisory, hosting report and your own logs. Use them to locate likely exploitation across access logs and sibling sites.

Treat indicators as leads with expiry and context. Shared IP addresses, generic PHP filenames or ordinary POST requests can be benign. Preserve matching requests, then confirm them against file/database changes rather than blocking large address ranges or deleting every similarly named file.

If logs do not cover the exposure period, state that limitation and widen the post-exploitation review.

Replace trusted components

Remove the compromised plugin directory completely and install the verified patched package. Rebuild WordPress core and other modified vendor components from official sources.

Manually review custom code rather than copying entire directories from the infected site. Clean database persistence with backups and owner attribution.

Clear opcode and page caches through supported controls.

Rotate exposed secrets

If attackers could read wp-config.php, rotate database credentials and WordPress salts. Review hosting, SFTP, deployment and API secrets stored on the server.

Revoke unknown sessions, administrators and application passwords. Coordinate integrations to avoid restoring old secrets from automation.

Password changes do not remove an already installed file backdoor.

Review exploitation across the account

Search access logs for requests to the vulnerable endpoint across every site running the plugin. Check staging/forgotten installations and shared hosting permissions.

The production plugin can be patched while an old copy remains exploitable and able to write into the same account.

Remove or isolate unsupported copies and assign patch ownership.

Verify the original route and persistence

Confirm the patched version and absence of vulnerable endpoint behaviour using safe vendor guidance, not live exploit payloads.

Monitor files, users, cron and outbound requests beyond the prior recurrence period. Repeat original public symptoms under clean visitor conditions.

Document what was found and what evidence remains unavailable.

Check that automatic updates, deployment tools and backups no longer contain the vulnerable package. A later rollback can silently reopen the same entry point.

Request post-exploitation cleanup

Request an assessment when the site was exposed before patching, files/users appeared or the plugin handled uploads/authentication. Send version/timeline and public symptoms without credentials.

A complete response proves the entry was patched and that every persistence mechanism created during exposure was removed.

BEFORE YOU SEND THE REQUEST

Frequently asked questions.

Do you ask for passwords in the form?+

No. The public form never requests access. Secure credentials are requested only after the scope and quote are approved.

Who reviews the incident?+

The request goes to Jordi Ensenyat, founder of Code Barcelona and a WordPress specialist with more than 15 years of experience.

Is anything changed before the quote?+

No. Visible symptoms and scope are reviewed first. Intervention begins after approval and with a rollback path prepared.

Do you work internationally?+

Yes. WP Repair handles WordPress and WooCommerce incidents in English and Spanish through a remote service.

Assess my incident