Incident response

Compromised site recovery

Cleaning a compromised website, establishing how the attacker got in, and getting the browser and Search Console warnings lifted.

WP-CLIClamAVLog analysisGoogle Search ConsoleFile integrity monitoring

The problem

Describe how the compromise was discovered and what it was doing, spam injection, redirects, outbound mail.

Approach

  • A forensic copy taken before anything was modified, so the investigation was still possible after cleanup.
  • Access and error logs plus file modification timestamps used to establish the entry point before any files were touched.
  • CMS core and plugins replaced from clean upstream copies rather than disinfected file by file, and every credential rotated including database and FTP.
  • Database checked for injected content, rogue administrator accounts and malicious scheduled tasks.
  • Review requests submitted to Google Safe Browsing and Search Console, followed by file integrity monitoring for several weeks, the window in which a missed backdoor typically reactivates.

More work

Backend & infrastructure

Multi-tenant Laravel platform

A Laravel application serving multiple client organisations from one codebase, with per-tenant data isolation and queued background processing.

LaravelMySQLRedisHorizon +2
Server engineering

cPanel hosting fleet migration

Moving a set of cPanel accounts onto new infrastructure, websites, databases, mailboxes and DNS, with the cutover planned so downtime stayed in minutes.

WHMcPanelIMAPSyncrsync +2
AI engineering

Retrieval-grounded support assistant

A support assistant answering from the organisation's own documentation, with citations on every answer and a clean handover when confidence was low.

Claude APIPythonFastAPIpgvector +2

Something like this on your plate?

Describe the situation and I will tell you how I would approach it.

Start a conversation