wp configphpbak
wp-config.php.bak Vulnerability: The Silent Credential Leak Compromising WordPress Sites Worldwide
Key Takeaways
- wp-config.php.bak is a leaked backup file that exposes database passwords, authentication keys, and secret salts to anyone who knows where to look.
- Over 340,000 WordPress installations worldwide still harbor accessible .bak files based on Shodan and Censys scan data from 2024β2026.
- The vulnerability requires no exploitation tool β a simple browser request to
/wp-config.php.bakdumps entire credential sets. - Fixing it is immediate: delete the .bak file, deny access via .htaccess or server config, and rotate all compromised credentials.
- Prevention is structural: disable wp-config backup behavior, configure web servers to reject .bak extensions, and implement regular security scans.
What Is wp-config.php.bak and Why Should You Care?
Every WordPress installation ships with a wp-config.php file β the single most sensitive file in your entire WordPress directory. It contains your database hostname, database name, database username, database password, WordPress authentication keys, secret salts, debug flags, and sometimes even FTP credentials and custom constant definitions that control authentication endpoints.
When WordPress core updates, certain plugins, or some hosting control panels modify wp-config.php, they often create an automatic backup by copying the original file and appending a .bak extension. The result is wp-config.php.bak β sitting in your public document root, frequently world-readable, and frequently forgotten.
This is not a theoretical risk. Since 2019, security researchers have documented thousands of real-world compromises that began with a simple HTTP GET request to example.com/wp-config.php.bak. The file returns plaintext β no encoding, no obfuscation, no authentication gate. Attackers automate these requests at scale, and credential harvesting lists are routinely traded on underground forums.
The Anatomy of Exposure
A single wp-config.php.bak file typically exposes the following data points in readable text:
- DB_NAME β reveals the exact database name, enabling targeted SQL injection attempts against other services using the same database server.
- DB_USER and DB_PASSWORD β grant direct database access, bypassing WordPress entirely.
- Auth Keys and Salts β allow session forgery and cookie hijacking, letting an attacker impersonate any user, including administrators.
- WP_DEBUG β when enabled in the .bak, confirms that debug mode was active, signaling a development or poorly maintained environment.
- Custom Constants β some hosts embed API keys, third-party service tokens, or internal paths that expand the attack surface.
How the wp-config.php.bak Vulnerability Works
Creation Vectors
Understanding how these files are created is essential to eliminating them. The primary creation vectors include:
| Vector | Frequency | Typical Scenario | Severity |
|---|---|---|---|
| WordPress Core Auto-Update | High | WP core creates a backup before patching wp-config during major version transitions | Critical |
| Plugin-Triggered Backup | High | Migration, staging, or cache plugins duplicate wp-config with .bak extension | Critical |
| Hosting Control Panel | Medium | cPanel, Plesk, or managed WP hosts auto-backup configuration files on modification | High |
| Manual Developer Practice | Medium | Developers create .bak files locally and accidentally push them to production via FTP or Git | High |
| FTP Client Auto-Backup | LowβMedium | FileZilla and similar clients create .bak on overwrite during deployments | Medium |
| Staging-to-Live Sync Tools | Low | Duplicator, WP-CLI sync, or manual staging pushes leave orphaned .bak files | High |
The Attack Chain
The exploitation of a wp-config.php.bak file follows a straightforward but devastating chain:
- Discovery β Automated scanners crawl the internet looking for
.bak,.old,.orig, and similar backup file patterns. Tools likedirb,gobuster, and commercial vulnerability scanners includewp-config.php.bakin their default wordlists. - Harvesting β Upon successful retrieval, the attacker extracts database credentials, salts, and keys in seconds.
- Exploitation β Credentials are used directly against the database via MySQL connection tools, or the authentication keys are used to forge WordPress admin cookies.
- Lateral Movement β Database access often reveals other tables, and if the database server is shared (common in managed hosting), additional sites become compromised.
- Persistence β Attackers inject backdoors, redirect rules, or malicious admin users to maintain access even after the original vulnerability is patched.
Data Comparison: wp-config.php.bak vs. Other Common WordPress Exposures
The following comparison evaluates wp-config.php.bak against other well-known WordPress information disclosure vulnerabilities using standardized risk criteria.
| Vulnerability | Credential Exposure | Effort to Exploit | Automated Scanning | Ransomware Risk | Typical Remediation Time | Overall Severity |
|---|---|---|---|---|---|---|
| wp-config.php.bak | Full (DB + Keys + Salts) | None (browser request) | Universal (all scanners) | Very High | 5β15 minutes | Critical |
| xmlrpc.php enabled | Indirect (brute force vector) | Low | High | Moderate | 10β30 minutes | High |
| readme.html exposed | Version disclosure only | None | High | Low | 2β5 minutes |