{"id":"CVE-2026-19803","published":"2026-11-07T04:17:29.233","lastModified":"2026-11-08T19:17:39.240","description":"The Printcart Store – Web to Print Product Designer for WooCommerce plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including, 2.13.2. This is due to the `nbu_crop_image` AJAX handler accepting a user-supplied `url` parameter that `Nbdesigner_IO::convert_url_to_path()` concatenates onto the uploads base directory without normalizing or stripping `../` sequences, and then deriving both the output directory and output file extension via `pathinfo()` from the same attacker-controlled path — with no `stripImage()` call before `writeImage()` is invoked. This makes it possible for unauthenticated attackers to write attacker-controlled PHP content to arbitrary locations outside the uploads directory, resulting in remote code execution when the written file is subsequently requested. This vulnerability is only exploitable when the `nbdesigner_upload_popup_style` site option is set to `a` (Advanced Upload Popup), which causes the handler to be registered for unauthenticated requests; however, the required `save-design` nonce is printed on the fully public frontend `upload-design-file` page, making it trivially obtainable by any anonymous visitor once that configuration is active.","cvssScore":9.8,"cvssSeverity":"CRITICAL","cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","cwes":["CWE-94"],"vendors":[],"products":[],"references":[{"url":"https://plugins.trac.wordpress.org/browser/printcart-integration/tags/2.8.4/includes/class-util.php#L165","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/printcart-integration/tags/2.8.4/includes/class-util.php#L586","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/printcart-integration/tags/2.8.4/includes/class.advanced.upload.php#L272","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/printcart-integration/tags/2.8.4/includes/class.advanced.upload.php#L284","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/printcart-integration/tags/2.8.4/includes/class.advanced.upload.php#L56","tags":[]},{"url":"https://plugins.trac.wordpress.org/changeset?reponame=&old=3747660%40printcart-integration&new=3747660%40printcart-integration","tags":[]},{"url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/2525ed97-b701-4f95-8d8c-202e816723c5?source=cve","tags":[]}],"exploitRefs":[],"hasPoc":false,"ai":{"summary":"The Printcart plugin's AJAX handler allows unauthenticated attackers to upload arbitrary files outside the uploads directory by passing a crafted URL with directory traversal sequences, leading to remote code execution when the uploaded PHP file is accessed.","exploitability":"Exploitation requires the site to be configured with `nbdesigner_upload_popup_style` set to `a`, but the required nonce is publicly exposed on the frontend, making exploitation trivial for unauthenticated attackers.","blast_radius":"Successful exploitation grants full remote code execution as the web server user, enabling complete compromise of the host and potential lateral movement within the network.","remediation":"Upgrade to Printcart Store – Web to Print Product Designer for WooCommerce version 2.13.3 or later, which addresses the directory traversal vulnerability in the `nbu_crop_image` handler.","detection":"Look for unexpected PHP files created outside the WordPress uploads directory (e.g., in plugin or theme directories) and monitor for HTTP requests to newly created suspicious PHP files on the server; no reliable network-level indicator is derivable from the published description.","tags":["rce","traversal","upload","unauth","web"],"model":"garnet-coder","analyzedAt":"2026-11-07T09:55:57.450Z"}}