Skip to content

Free printable checklist

Hack recovery

After a WordPress hack: contain it, keep evidence, find the way in, clean, harden, recover.

KIT-02

PDF, 1 page, 7 KB

Download the PDF

One page. Prints on any black and white printer. No signup.

Contain it

  • Work from a device you trust is clean.
  • Turn on maintenance mode or block public access at the host or firewall.
  • Change hosting, SFTP/SSH, email and WordPress admin passwords. Remove unknown SSH keys.
  • Change the database password and update DB_PASSWORD in wp-config.php to match.

Keep evidence first

  • Download the files and database as they are. Label the copy infected and store it apart.
  • Save access and error logs before they rotate, and ask your host for theirs.
  • Keep a timeline of what you saw and every change you make.

Find the way in

  • Search access logs for POSTs to odd PHP files, wp-login.php and xmlrpc.php near the start.
  • List changed PHP files: find . -name "*.php" -mtime -14. Widen the window as needed.
  • Uploads should hold no PHP: find wp-content/uploads -name "*.php".
  • Run wp user list --role=administrator and note any admin you did not create.
  • Check wp option get siteurl and home, and wp cron event list for odd hooks.
  • Inspect .htaccess, wp-config.php, index.php and wp-content/mu-plugins for injected code.
  • Note outdated plugins: wp plugin list --update=available. One is often the way in.

Clean it

  • Restore a backup from before the break-in if you have one, then patch the hole.
  • Otherwise run wp core download --force --skip-content, then wp core verify-checksums.
  • Reinstall plugins and themes from the source, then wp plugin verify-checksums --all.
  • Delete what you cannot trace to a source: plugins, files, mu-plugins, admin users.
  • Search the database for injected code: wp db search "<script" and “base64_decode”.

Harden and recover

  • Require 2FA for every admin, and downgrade accounts that do not need admin.
  • Replace the salts in wp-config.php with new keys from api.wordpress.org/secret-key/1.1/salt/.
  • Update everything, delete unused plugins and themes, and set DISALLOW_FILE_EDIT to true.
  • Check the Search Console Security Issues report and request a review once clean.
  • Check Google Safe Browsing status, and email blocklists if the server sent spam.
  • If personal data may be exposed, check your notification obligations with a lawyer.
  • Watch logs and file changes for 30 days. Reinfection often means a missed backdoor.

Keep packing

The rest of the bag

KIT-01
PDF, 1 page, 7 KB

Backup plan

What a full WordPress backup contains, how often to run it, where to keep it, how to test it.

KIT-03
PDF, 1 page, 7 KB

Pre-launch

Check DNS, SSL, WordPress settings, security, speed, SEO, forms and backups before a new or redesigned site goes live.

KIT-04
PDF, 1 page, 7 KB

Switching hosts

Move a WordPress site to a new host without losing email, SSL, data or rankings: inventory, rehearse, cut over, then wait.

KIT-05
PDF, 1 page, 6 KB

Site takeover access inventory

Every login, account and file to collect when you inherit a website, in the order that keeps it safe: domain first, backup before changes, then access, code and renewals.

KIT-06
PDF, 1 page, 7 KB

Store fraud response

When a WooCommerce store is hit by card testing: confirm it, slow it down in the first hour, clean up the orders, report it and harden the checkout.

KIT-07
PDF, 1 page, 6 KB

Monthly maintenance

A one-page monthly routine for a WordPress site: backups tested, updates in a safe order, renewals, uptime, Search Console, forms and security checks.

KIT-08
PDF, 1 page, 5 KB

Renewals register

A fill-in register for everything a website renews, with the provider, account owner, who pays, renewal date, cost and cycle, auto-renew and sites for each, one row per item.

Search the field manual

What is going wrong?

Press / to search from any page, Esc to close