CVE-2026-63030 and CVE-2026-60137 – WordPress wp2shell vulnerability-chain scanner
Authorized security-research tool with optional command-verification PoC.
wp2shell-scanner detects the WordPress wp2shell vulnerability chain by
validating public WordPress evidence, fingerprinting exposed versions, checking
REST batch behavior, and measuring an active timing differential. It is
intended for authorized defensive research, CTF environments, and systems you
own or administer.
This project is provided strictly for authorized security testing and defensive research.
- Use it only against systems you own, administer, or have explicit permission to assess.
- Do not scan public websites, production systems, or infrastructure you do not control.
-p/--pocchanges WordPress state before attempting best-effort cleanup.- You are responsible for complying with all applicable laws, regulations, and agreements.
- Scan a single target or a deduplicated list of targets.
- Detect public WordPress HTML, header, and REST API markers.
- Fingerprint exposed WordPress versions when possible.
- Check REST batch behavior and collect structural route markers.
- Use repeated baseline and delayed timing probes for active confirmation.
- Concurrent list scanning with a configurable worker count.
- Clear per-target completion progress and a final status breakdown.
- Color-coded terminal output that automatically remains plain when piped or redirected.
- JSON export with optional inclusion of every scan result.
- Quiet multiline command output and verbose PoC response diagnostics.
- Actionable input, network, and response errors.
- Optional command-verification PoC after active confirmation, using
whoamiby default or a researcher-supplied command.
- Python 3.10 or later
- Dependencies listed in
requirements.txt:requestscolorama
Obtain this repository, then install the dependencies from its root directory.
-
Change to the project directory:
cd wp2shell-scanner -
Optional but recommended: create and activate a virtual environment:
python3 -m venv .venv source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
-
Install dependencies:
python3 -m pip install -r requirements.txt
-
Confirm the CLI is available:
python3 wp2shell-scanner.py -h
Display help:
python3 wp2shell-scanner.py -hRunning the tool without a target displays the branded help text and exits with
a usage error. Supply exactly one target source: -u/--url for one target or
-l/--list for a target file.
python3 wp2shell-scanner.py -u https://wordpress.exampleTargets without a scheme are treated as http:// URLs. Target-list files use
one URL per line; blank lines and lines starting with # are ignored. Invalid
entries are reported with their line number.
The supported entry point is the root script:
python3 wp2shell-scanner.py -u https://wordpress.example| Option | Description | Default |
|---|---|---|
-u URL, --url URL |
Scan one WordPress target URL. Mutually exclusive with --list. |
None |
-l FILE, --list FILE |
Scan target URLs from a text file. Mutually exclusive with --url. |
None |
| Option | Description | Default |
|---|---|---|
-p, --poc |
After active confirmation, run the state-changing command-verification PoC. Uses whoami unless --command is supplied. |
Off |
-c COMMAND, --command COMMAND |
Execute COMMAND during --poc; requires --poc. |
whoami |
-t N, --threads N |
Concurrent target workers for a list scan. N must be at least 1. |
10 |
| Option | Description | Default |
|---|---|---|
-o FILE, --output FILE |
Write a UTF-8 JSON array of results to FILE. By default, only confirmed vulnerable results are included. |
None |
--all-results |
Include every scan result in --output, including non-vulnerable, not-WordPress, and error results. |
Off |
-v, --verbose |
Show the final PoC HTTP status and X-Action-Redirect header. |
Off |
-q, --quiet |
On successful PoC execution, print only normalized command output. Failures and cleanup warnings go to stderr. | Off |
--no-color |
Disable colored terminal output. | Off |
Scan one target:
python3 wp2shell-scanner.py --url https://wordpress.exampleScan a target list with 20 workers:
python3 wp2shell-scanner.py --list targets.txt --threads 20Run the state-changing verification PoC only after the scanner actively confirms the target:
python3 wp2shell-scanner.py -u https://wordpress.example -pRun a researcher-supplied command and print only its normalized multiline output:
python3 wp2shell-scanner.py --url https://wordpress.example -p --command "ls -la" --quietWrite only confirmed vulnerable results to JSON, or include every target with
--all-results:
python3 wp2shell-scanner.py --list targets.txt --output results.json
python3 wp2shell-scanner.py --list targets.txt --output results.json --all-results| Result | Meaning |
|---|---|
| VULNERABLE | The active timing probe confirmed the vulnerability chain. Patch the target immediately. |
| POTENTIALLY AFFECTED | A public version is in an affected range, but active confirmation was blocked or inconclusive. Patch and investigate. |
| NOT VULNERABLE | The active probe was not confirmed and no affected public version was detected. |
| NOT WORDPRESS | Public WordPress evidence was not found. |
| ERROR | A network, TLS, target-input, or unexpected-response error prevented a reliable scan. |
Affected stable releases are WordPress 6.9.0–6.9.4 and 7.0.0–7.0.1. Update to 6.9.5 or 7.0.2, or a later release, immediately.
| Code | Meaning |
|---|---|
0 |
The scan completed without any POTENTIALLY AFFECTED result. Confirmed vulnerable results also use this code. |
1 |
At least one target is POTENTIALLY AFFECTED. |
2 |
Target input was invalid, or every scheduled target ended in an error. |
- Hidden Investigations – for publishing the wp2Shell scanner and PoC tool.
- @sakibulalikhan – tool author.
This project is licensed under the MIT License. See LICENSE for details.
📬 Contact us: hi@hiddeninvestigations.net