Fancy Product Designer < 4.6.9 - Unauthenticated Arbitrary File Upload and RCE


The plugin allows unauthenticated attackers to upload arbitrary files, resulting in remote code execution. The issue is being actively exploited, and no patch is available. Further details will be made available once pathed. ### PoC The Custom Product Designer plugin for WordPress offers the ability for customers to upload images and PDF files via the custom-image-handler.php. On sites running Apache, this file must be loaded via the “fpd_custom_uplod_file” AJAX action, whereas on sites running NGINX this file can be accessed directly, as the .htaccess rule blocking access to this file will not be processed on NGINX. Regardless of how the file is accessed, it is possible to use the custom image handler to upload executable PHP files. This is possible because the FPD_Image_Utils::sanitize_filename method in fpd-image-utils checks for malicious extensions on the unsanitized version of the supplied filename. In other words, it’s possible to supply a file with a “filename” of “.p h p” or “.p-h-p”. Both of these pass the malicious file extension check, but are sanitized down to “.php”, and are added to the site in a filename with a unique id ending in PHP (e.g. 1d4609806ff0f4e89a3fb5fa35678fa0.php). An example POST body is listed below though it would be good to not display it until the vulnerability has been patched: \------WebKitFormBoundaryPq7qdNQ9shOFwW78 Content-Disposition: form-data; name="action" fpd_custom_uplod_file \------WebKitFormBoundaryPq7qdNQ9shOFwW78 Content-Disposition: form-data; name="uploadsDir" uploads \------WebKitFormBoundaryPq7qdNQ9shOFwW78 Content-Disposition: form-data; name="uploadsDirURL" uploads \------WebKitFormBoundaryPq7qdNQ9shOFwW78 Content-Disposition: form-data; name="saveOnServer" 1 \------WebKitFormBoundaryPq7qdNQ9shOFwW78 Content-Disposition: form-data; name="pdf"; filename="blah.p h p" Content-Type: application/pdf

Affected Software

CPE Name Name Version
fancy-product-designer 4.6.9