XSS in FieldPopupNewsletter Prestashop Module CVE-2023-39676
This blog post details an XSS we found within the FieldPopupNewsletter module, developed by FieldThemes, for the popular ecommerce platform Prestashop.
The module contains a file called ajax.php with the following code:
$ppp = new FieldPopupNewsletter();
echo $ppp->newsletterRegistration($_POST['email']);
The newsletterRegistration function, called by the ajax.php file, contains code that lacks proper input validation:
public function newsletterRegistration($email) {
if (empty($email) || !Validate::isEmail($email)) {
echo $_GET['callback'] . '(' . json_encode(array('<p class="alert alert-danger">' . $this->l('Invalid email address.') . '</p>')) . ')';
return;
}
The callback GET parameter is printed to the page without sanitization which makes it susceptibvle to XSS. One might think the fact a POST parameter is used might mitigate this vulnerability but closer reading reveals this works when $_POST['email'] isn’t set.
Proof of Concept
As a demonstration of the vulnerability, an attacker can craft a malicious URL, like the one shown below, to execute arbitrary JavaScript code on the target user’s browser:
http://localhost/modules/fieldpopupnewsletter/ajax.php?callback=%3Cscript%3Ealert(0)%3C/script%3E
Conclusion
XSS vulnerabilities are serious security risks that can lead to unauthorized access, data theft, and other malicious activities. In the case of the FieldPopupNewsletter module, a lack of input validation exposes users to potential attacks.
We strongly advise users of this module to update to the latest patched version, which should address the XSS vulnerability.
Timeline
| Date | Action |
|---|---|
| 10/07/2023 | Issue discovered during a pentest |
| 12/07/2023 | Reported issue to FieldThemes |
| 29/07/2023 | Requested CVE from MITRE |
| 28/08/2023 | Number CVE-2023-39676 assigned |
| 31/08/2023 | Patch released |
| 07/09/2023 | Blog post and nuclei template released |
