TNC Toolbox: Web Performance Unauthenticated cPanel Credential Exposure (CVE-2025-12539)
by Nxploited (Khaled Alenazi) · 2026-07-06
- Severity
- Critical
- CVE
- CVE-2025-12539
- Category
- web
- Affected product
- TNC Toolbox: Web Performance (WordPress plugin)
- Affected versions
- <= 1.4.2
- Disclosed
- 2026-07-06
- Patch status
- unpatched
Tags
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-06 |
| Last Updated | 2026-07-06 |
| Author / Researcher | Nxploited (Khaled Alenazi) |
| CVE / Advisory | CVE-2025-12539 |
| Category | web |
| Severity | Critical |
| CVSS Score | 10.0 (per NVD) |
| Status | Weaponized |
| Tags | wordpress, tnc-toolbox, sensitive-information-exposure, unauthenticated, cpanel, credential-theft, privilege-escalation, python |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | TNC Toolbox: Web Performance (WordPress plugin) |
| Versions Affected | <= 1.4.2 |
| Language / Platform | Python 3.7+ (PoC), PHP (target plugin), targets WordPress installations |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
TNC Toolbox: Web Performance is a WordPress plugin that integrates with cPanel to manage caching/performance settings, and stores the cPanel API credentials (hostname, username, API key) it needs for that integration in plaintext files under a predictable, web-accessible path inside wp-content. The plugin’s Tnc_Wp_Toolbox_Settings::save_settings function writes these files without any access controls (no .htaccess deny, no index.php guard, no authentication check on the files themselves), so anyone who can reach the site over HTTP can simply request the files directly. The included PoC (CVE-2025-12539.py) fingerprints the plugin’s version via its readme.txt, and if the version is <= 1.4.2, fetches the three credential files and reports the extracted cPanel username, API key, and hostname. With those credentials, an attacker can log into cPanel and, from there, upload files or otherwise gain remote code execution on the underlying hosting account.
Vulnerability Details
Root Cause
The plugin persists cPanel API credentials to static, unauthenticated files under wp-content:
| |
Because these are plain files inside the default web root (rather than being stored in the WordPress database with capability checks, or outside the webroot entirely), any unauthenticated HTTP client can retrieve them with a simple GET request. There is no session, nonce, or authorization check on save_settings’s output files — the vulnerability is a straightforward information-disclosure-by-design flaw rather than a memory-safety or injection bug.
Attack Vector
- The PoC fetches
<target>/wp-content/plugins/tnc-toolbox/readme.txtand extracts theStable tag:field via regex to determine the installed plugin version. - If the detected version is
<= 1.4.2, the script performs a version-tuple comparison (Nxploited_is_vulnerable) to confirm the target is in scope. - The script then issues GET requests to the three predictable config file paths (
cpanel-username,cpanel-api-key,server-hostname) underwp-content/tnc-toolbox-config/. - Any file that returns HTTP 200 with non-empty content is captured as a leaked cPanel credential and included in a JSON report.
- With the leaked hostname, username, and API key, an attacker authenticates to the cPanel API/UI directly, from which they can upload a webshell via the File Manager or configure a cron job, achieving full remote code execution on the hosting account (and potentially every WordPress site hosted under that account).
Impact
Unauthenticated disclosure of cPanel API credentials, enabling account takeover of the hosting control panel and — from there — arbitrary file upload, remote code execution, and compromise of the entire hosting environment (not just the single WordPress site).
Environment / Lab Setup
Target: WordPress with TNC Toolbox: Web Performance plugin <= 1.4.2 installed
Attacker: Python 3.7+, requests package
Proof of Concept
PoC Script
See
CVE-2025-12539.pyin this folder.
| |
Detection & Indicators of Compromise
GET /wp-content/plugins/tnc-toolbox/readme.txt HTTP/1.1
GET /wp-content/tnc-toolbox-config/cpanel-username HTTP/1.1
GET /wp-content/tnc-toolbox-config/cpanel-api-key HTTP/1.1
GET /wp-content/tnc-toolbox-config/server-hostname HTTP/1.1
Signs of compromise:
- Access log entries requesting
/wp-content/tnc-toolbox-config/*from unfamiliar IPs. - cPanel login/API activity from IPs not associated with the site administrator.
- Unexpected files added via cPanel File Manager or new cron jobs on the hosting account.
- Requests to
readme.txtfor version fingerprinting followed immediately by requests to the config paths (automated scanner pattern).
Remediation
| Action | Detail |
|---|---|
| Primary fix | Upgrade TNC Toolbox: Web Performance beyond 1.4.2 once a patched release is available that stores credentials outside the webroot or in the WordPress options table with proper access controls; rotate the cPanel API key immediately if the plugin has ever been active. |
| Interim mitigation | Deactivate the plugin; manually delete/move the wp-content/tnc-toolbox-config/ directory; add a web server deny rule for wp-content/tnc-toolbox-config/; rotate any exposed cPanel API keys and review cPanel account activity for unauthorized logins. |
References
Notes
Mirrored from https://github.com/Nxploited/CVE-2025-12539 on 2026-07-06. Templated Nxploited-style branding (banner/author messaging, Telegram handle) but the exploit logic — version fingerprinting via readme.txt plus fetching the three specific tnc-toolbox-config credential file paths — is CVE-specific and functional.
| |