@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.:. Exploit Title > Wordpress Modal Popup Box Plugin - Multiple Vulnerabilities
.:. Date: March 25, 2025
.:. Exploit Author: bRpsd
.:. Contact: cy[at]live.no
.:. Plugin -> https://wordpress.org/plugins/modal-popup-box/
.:. Product Version -> [1.5.8 and below]
.:. DBMS -> MySQL
.:. Tested on > macOS [*nix Darwin Kernel], on local xampp
.:. Severity: High
.:. Requires Admin+ Authentication
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Description:
The Modal Popup Box plugin for WordPress is vulnerable to a PHP Object Injection attack due to the unsafe use of the unserialize() function on user-controlled data. This vulnerability allows an attacker to inject a serialized PHP object into the plugin's data processing flow, potentially leading to remote code execution (RCE), data manipulation, or denial of service (DoS)
The vulnerability is located in the modal-popup-box.php file, where the plugin retrieves and processes serialized data from the WordPress post meta.
The following code snippet demonstrates the vulnerable section:
====================================================================================
$encodedData = get_post_meta($modal_popup_box_id, 'awl_mpb_settings_' . $modal_popup_box_id, true);
$decodedData = base64_decode($encodedData);
if (is_mpb_serialized($decodedData)) {
$modal_popup_box_settings = unserialize($decodedData);
}
====================================================================================
Exploitation:
An attacker can exploit this vulnerability by crafting a serialized PHP object with a magic method (e.g., __destruct) that executes arbitrary code. The payload can be injected into the post meta data through form submissions.
For example form vulnerable parameter with payload: mpb_main_button_text=O:14:"MaliciousClass":0:{}
Impact:
- Remote Code Execution (RCE): Execute arbitrary PHP code on the server.
- Data Manipulation: Alter plugin settings or other data stored in the database.
- Denial of Service (DoS): Cause the application to crash or become unresponsive
Mitigation:
- Avoid using unserialize() on untrusted data.
- Use JSON for data serialization and deserialization.
- Implement strict input validation and sanitization.
- Update the plugin to the latest version once a patch is available
Proof of Concept:
1- Inject the serialized payload into a form field that is stored in the database and later unserialized
2-Trigger the vulnerability by accessing the modal settings, which will execute the injected payload.
Vulnerability 2: DoS
attempting to include [MPBOX id=] shortcode into any posts or pages causes denial of service for some reason.Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation