Cloudanix VulnDB

CVE-2021-25003

Critical · 9.8

CVSS

9.8

EPSS

56.1%

Published

Mar 14, 2022

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Attend

A vulnerable shipping-tracking plugin can let outsiders place malicious code on a website and take it over.

Weaponized
Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Remote Code Execution
Component
Application
Class
RCE
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

CVE-2021-25003 is an unauthenticated arbitrary PHP file-write vulnerability in the WPCargo Track & Trace WordPress plugin before version 6.9.0. A remotely reachable attacker can cause the plugin to write a PHP file to an attacker-controlled path on the web server. If that file is placed in a web-accessible location, the attacker can request it over HTTP and execute server-side PHP code, resulting in full remote code execution in the context of the web server user. Because exploitation requires no authentication, no user interaction, and low attack complexity, compromise can include file modification, data theft, credential harvesting, web shell deployment, persistence, and complete takeover of the WordPress application.

Why it matters to the business

Successful exploitation can allow an external attacker to take control of an affected WordPress site, deface pages, steal customer or shipment-related data, install malware, redirect visitors, send spam, or use the server as a foothold for broader infrastructure compromise. The high CVSS score, weaponized exploit maturity, and elevated EPSS score indicate meaningful real-world exploitation risk even though the vulnerability is not currently listed in CISA KEV. Organizations using WPCargo Track & Trace should treat exposed vulnerable installations as high priority because WordPress plugin RCE flaws are commonly targeted by automated scanning and mass exploitation campaigns.

How an attack unfolds

An attacker first identifies a WordPress site running a vulnerable version of the WPCargo Track & Trace plugin. They then send a crafted unauthenticated HTTP request to the vulnerable plugin component that abuses its file-writing behavior to place a PHP payload on the server. The payload is typically written into a web-accessible directory such as the WordPress uploads tree, plugin directory, theme directory, or web root. After the file is written, the attacker requests the PHP file directly in a browser or automated tool, causing the web server to execute the payload. From there, the attacker may deploy a more capable web shell, enumerate WordPress configuration files, extract database credentials, create administrator users, modify plugin or theme files for persistence, redirect traffic, or use the host for spam, malware delivery, or lateral movement.

How to fix it

Upgrade WPCargo Track & Trace to version 6.9.0 or later. If an immediate upgrade is not possible, disable and remove the plugin until it can be safely updated. Restrict direct web access to PHP execution in upload directories, ensure file permissions prevent the web server from writing executable PHP into arbitrary locations, and apply a web application firewall rule that blocks suspicious unauthenticated POST requests to WPCargo plugin paths. Because exploitation can result in persistent web shells, remediation should include both patching and compromise assessment: remove unauthorized PHP files, rotate WordPress administrator passwords, rotate database credentials stored in WordPress configuration, review administrator accounts, and redeploy known-good plugin/theme files where tampering is suspected.

How to confirm the fix worked

Confirm the installed WPCargo Track & Trace plugin version is 6.9.0 or later by checking the WordPress admin plugin page, the plugin metadata, or the plugin files under wp-content/plugins. Verify the vulnerable plugin is not present in backups, staging sites, containers, or cloned web roots exposed to the internet. Test that unauthenticated users cannot write files through WPCargo plugin endpoints and that PHP files cannot execute from upload directories. Review the web server document root for recently created or modified PHP files, especially in wp-content/uploads, wp-content/plugins, wp-content/themes, and the WordPress root. After patching, monitor for continued requests to suspicious PHP files that may indicate a previously planted web shell remains active.

Typical attack path

  1. Scan public websites for WordPress installations exposing the WPCargo Track & Trace plugin.
  2. Fingerprint the plugin path or version to identify installations older than 6.9.0.
  3. Send a crafted unauthenticated request to the vulnerable plugin file-writing component.
  4. Write a PHP payload to a web-accessible location on the server.
  5. Request the uploaded PHP file over HTTP to execute commands on the server.
  6. Establish persistence by planting additional web shells, modifying theme/plugin files, or creating privileged WordPress users.
  7. Access WordPress configuration files and database credentials, then exfiltrate or manipulate site data.
  8. Use the compromised site for defacement, redirects, spam, malware hosting, or further infrastructure compromise.

How to detect it

Investigate web server access logs, WordPress logs, WAF logs, EDR telemetry, and file integrity monitoring for signs of arbitrary PHP file creation followed by execution. Focus on unauthenticated POST requests to WPCargo plugin paths, especially requests returning HTTP 200/201/302 immediately followed by GET requests to newly created PHP files. Search the WordPress web root for recently modified PHP files in writable locations such as wp-content/uploads, wp-content/cache, wp-content/plugins, wp-content/themes, and the document root. Review file contents for common web shell functions such as eval, assert, system, shell_exec, passthru, proc_open, base64_decode, gzinflate, str_rot13, preg_replace with /e, or long obfuscated strings. Check for new WordPress administrator accounts, modified theme/plugin files, unexpected scheduled tasks, unfamiliar PHP files with random names, and outbound connections from the web server to unknown IPs. Correlate any suspicious file creation time with HTTP requests from the same source IP and user agent. If a web shell is found, preserve the file, surrounding logs, and process/network telemetry before cleanup.

  • /wp-content/plugins/wpcargo/
  • wp-content/plugins/wpcargo
  • POST /wp-content/plugins/wpcargo/
  • GET /wp-content/uploads/
  • /wp-content/uploads/*.php
  • eval(base64_decode(
  • base64_decode($_POST
  • base64_decode($_REQUEST
  • system($_GET
  • system($_POST
  • shell_exec($_GET
  • shell_exec($_POST
  • passthru($_GET
  • passthru($_POST
  • assert($_POST
  • preg_replace("/.*\/e
  • FilesMan
  • WSOsetcookie
  • c99shell
  • r57shell

What your security team should do

  • Immediately inventory internet-facing WordPress sites for WPCargo Track & Trace and prioritize any version before 6.9.0 for upgrade or removal.
  • Assume externally exposed vulnerable instances may have been targeted because exploit maturity is weaponized and EPSS is elevated.
  • Perform a compromise assessment before closing the incident: search for unauthorized PHP files, new administrator users, modified plugin/theme files, and unexpected outbound connections.
  • Disable PHP execution in wp-content/uploads and other writable directories wherever operationally feasible.
  • Rotate WordPress administrator credentials and database credentials if exploitation is suspected or web shells are found.
  • Review web server access logs for unauthenticated POST requests to WPCargo plugin paths followed by GET requests to newly created PHP files.
  • Deploy WAF or reverse-proxy rules to block suspicious file-write/upload attempts against WordPress plugin paths.
  • Ensure WordPress core, themes, and all plugins are included in continuous vulnerability management and externally validated attack-surface scanning.

The record

The WPCargo Track & Trace WordPress plugin before 6.9.0 contains a file which could allow unauthenticated attackers to write a PHP file anywhere on the web server, leading to RCE

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities