Client: Harbor & Hound Outfitters (fictional) — pet & outdoor gear, Valparaiso IN storefront + WooCommerce online (≈$41K/mo online) · Date: Oct 2026 · Scope: WooCommerce stack, VPS hosting, payment flow, email, physical POS/network · Auditor: Deep Vector Labs
| Asset | Data held | Impact if lost/public |
|---|---|---|
| WooCommerce database (VPS) | 11,200 customers: names, addresses, order history, partial profile data | CRITICAL breach disclosure, IN AG notification duties, customer-trust collapse |
| Checkout page integrity | Stripe-hosted fields, but page HTML/JS served from their VPS | CRITICAL injected JS skims card entry before it reaches Stripe (the Magecart pattern) |
| WordPress admin + hosting panel | Full site control | HIGH defacement, phishing pages hosted under their brand |
| Store email (Google Workspace, 3 seats) | Supplier terms, customer threads | HIGH invoice-fraud pivot; MFA present ✓ (one bright spot) |
| In-store POS (Square) on retail Wi-Fi | — | LOW Square-managed, segmented, low exposure |
| # | Finding | Detail | Severity |
|---|---|---|---|
| F1 | Abandoned plugin with public auth-bypass | "QuickCart Booster" v1.9.4 — unmaintained since 2023; public CVE; consented test returned order table unauthenticated. Live exposure of all customer records, right now. | CRITICAL |
| F2 | No file-integrity or JS-change monitoring on checkout | A Magecart-style script injected tonight would be invisible until a customer or Stripe fraud filters noticed. Baseline: legitimate change cadence is ~weekly. | CRITICAL |
| F3 | Shared wp-admin credentials + no per-user accounts | Owner laptops + out-of-state contractor share "admin." No audit trail, no revocation without an outage. | HIGH |
| F4 | 31 plugins pending updates; 4 abandoned | Including a form builder with a stored-XSS CVE reachable by any site visitor. | HIGH |
| F5 | Unmanaged VPS: no patching cadence, no WAF, default SSH on :22 | sshd exposed to the internet; 41,000 failed logins/month in auth.log. No brute-force protection. | HIGH |
| F6 | Backups: weekly, same VPS disk | Compromise of the box removes the backups with it. Restore never tested. | MEDIUM |
| F7 | Security headers absent (CSP, X-Frame-Options) | Would have materially raised the bar for checkout-injection and clickjacking. | MEDIUM |
| F8 | "admin" username still enumerable via author archives | Grants attackers half the login for free and seeds password spraying. | LOW |
wp-admin or plugin breach → 3 lines of JS added to checkout → card numbers flow to attacker's collector for months → Stripe/fraud filters eventually flag the store → chargeback liability + disclosure spiral.
Anyone who read the 2024 CVE write-up can pull the full order history tonight. This isn't speculative — the test produced data.
F4's stored-XSS/file-upload paths → webshell → VPS fully owned → F6 means the backup disk burns too → rebuild from a two-week-old exported theme and memory.
Overall 7.1/10. PCI posture is SAQ-A by architecture but effectively voided if the checkout page can't prove integrity — the skimmer risk lives in their page, not Stripe's card fields. Sector likelihood draws on published e-commerce compromise stats (Magecart-family and WordPress plugin CVE exploitation frequency).
QuickCart uninstalled; access logs reviewed for prior hits (found: 3 crawlers, no confirmed exfil — documented for the file); db creds rotated.
Cloudflare WAF in front; hourly checkout-JS hash monitor alerting the owner by text — a Magecart injection now has a 60-minute life expectancy, not 40 days.
"admin" retired; named accounts with least-privilege roles (contractor = editor only); 2FA on wp-admin + hosting panel.
31 plugins → 19 (the abandoned four replaced with maintained equivalents); weekly managed-update window with staging test.
SSH keys-only on a non-standard port + fail2ban; unattended security packages; nightly off-box backups with restore test.
CSP in report-only → tuned → enforced on checkout; XFO/XCTO/Referrer-Policy set fleet-wide.