The Synopsys Cybersecurity Research Center (CyRC) has discovered CVE-2023-25828, an authenticated remote code execution (RCE) vulnerability in Pluck CMS. Pluck is a content management system (CMS) implemented in PHP designed for setting up and managing your own website. Devised with ease of use and simplicity in mind, Pluck is best suited for running a small website.
Pluck CMS features an “albums” module. Albums are used to create collections of images that can be inserted into web pages across the site. Albums allow the user to upload JPEG, PNG, and GIF filetypes, which undergo a normalization process before being available on the site.
Due to lack of file extension validation, it is possible to upload a crafted JPEG payload containing an embedded PHP web-shell. An attacker may navigate to it directly to achieve RCE on the underlying web server. Administrator credentials for the Pluck CMS web interface are required to access the albums module feature, and are thus required to exploit this vulnerability.
After authenticating through the web interface, navigate to the albums module and create a sample album. Images uploaded to an album are subject to normalization via functions from the graphics library PHP-GD, preventing simple web-shell embedding techniques. However, it is possible to embed a web-shell into a JPEG image that will survive this normalization using the tool Jellypeg. Create such a payload and upload it with an executable file extension (.php, .phar, etc.). Navigating to the uploaded file directly allows RCE.
Exploitation of this vulnerability would allow an attacker to run commands of their choosing on the underlying operating system of the web server running Pluck CMS.
CVSS Base Score: 8.2 (High)
CVSS 3.1 Vector: AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H/E:P/RL:O/RC:C
This vulnerability was discovered by CyRC researcher Matthew Hogg.
Discovery: 2023-02-05
Vendor Notified: 2023-02-13
Vendor Fixed: 2023-02-21
Public Disclosure: 2023-03-23