ZeroHour
Sansec (Magento / e-commerce security)published ()ingested Sansec Forensics Team

Over 200 PrestaShop stores expose installer, allowing full takeover

criticalVulnerability exploited in the wildimportance 60CVE-2026-75650

Vulnerabilities mentionedAll →

CVEVulnerabilityCVSSEPSSFlagsAffectedExposurePublished
CVE-2026-75650
Unauthenticated Template Injection RCE in Adobe Commerce and Magento (CVE-2026-75650)

Adobe Commerce and Magento (including Adobe Commerce B2B) contain an improper neutralization of special elements used in a template engine (CWE-1336), a template-injection flaw that permits arbitrary code execution in the context of the current user. The flaw is reachable over the network by unauthenticated attackers, requires no user interaction, and its changed scope (CVSS 3.1 S:C) means injected code executes beyond the vulnerable component, producing a maximum-severity (CVSS 10.0) remote code execution condition. A successful attacker gains arbitrary code execution on the storefront server; in the observed campaign, intruders installed a Rust backdoor and a PHP web shell (dubbed 'StyleSmuggler') on compromised servers. Any organization running an Adobe Commerce, Adobe Commerce B2B, or Magento storefront is in scope, with internet-facing e-commerce deployments most exposed. Exploitation is confirmed in the wild: the bug was abused as a zero-day before patching and was added to CISA's Known Exploited Vulnerabilities catalog on 2026-09-08.

Do: Apply Adobe's released patches immediately per vendor instructions, prioritizing internet-facing Commerce/Magento storefronts, and ensure compliance with CISA BOD 26-04 timelines for KEV entries. Hunt for 'StyleSmuggler' indicators of compromise, including unexpected Rust backdoor binaries and PHP web shells on hosts, and review template/theme customizations for tampering. Exact fixed version numbers are not included in the available data, so consult Adobe's advisory for the correct patched release for your Commerce/Magento version line.

10.02% KEV PoC
  • Adobe Commerce
  • Adobe Commerce B2B
  • Adobe Magento (open-source)
massroughly 100,000-300,000 internet-facing storefronts
Full article535 words · extracted from sansec.io · click to collapse

The affected stores span 27 countries, with France, Italy, Poland, and the Czech Republic accounting for the majority. Among them: a multi-billion dollar fashion retailer, two French university bookshops, and a pan-European retail chain with storefronts in five countries.

Sansec alerted each of the affected merchants.

How the attack works

PrestaShop ships with an install directory (/install/ in release builds, /install-dev/ in development builds) that contains the full installation wizard. When it remains accessible, an attacker can walk through the entire installer without any authentication.

In install-dev/controllers/http/process.php:

if (Tools::getValue('generateSettingsFile')) {
    $this->processGenerateSettingsFile();
}

This function writes app/config/parameters.php with database credentials from the installer session. Nothing prevents this from running on an already-installed shop. The ?step=process URL parameter lets an attacker force this step directly, bypassing step progression.

The installer accepts external MySQL credentials via dbServer, dbName, dbLogin, and dbPassword request parameters, so anyone can point the shop to an arbitrary database. From there, the installer populates a fresh PrestaShop instance with a new admin account.

PrestaShop does display a warning on the admin login page when the /install directory exists, replacing the login form with a message to delete it. However, this check only looks for /install, not /install-dev. And even when it does trigger, the gate only affects the rendered page: authentication itself can still be completed without the form being displayed.

Admin access leads to code execution: PrestaShop's module installer calls eval() on override files during module upload. After installing a webshell, the database config can be swapped back to the original credentials, giving access to all customer data.

Symfony Profiler exposure

Another 15 stores exposed the Symfony Profiler, which is enabled when PrestaShop runs in debug mode. The profiler is served under the admin path (/admin-dev/_profiler/ in development builds, /admin[random]/_profiler/ in production). Since production installs randomize the admin folder name, these are harder to discover, but the default /admin-dev/ path is trivially guessable.

The profiler records every request to the application, including requests from logged-in admin users. Each profiled request exposes its full session data, including the session cookie in plain text. It also exposes database credentials, application secrets, and internal routes.

PrestaShop's bug bounty is paused

PrestaShop has recently shut down their bug bounty program. The page now reads: "The program is currently paused. Please report security issues to [email protected] instead."

While these findings are configuration errors rather than software vulnerabilities, the absence of an active bounty program leaves less incentive for researchers to report issues they find in the wild.

Recommendations

  1. Delete the install directory: Remove /install-dev/ (and /install/) from your production server entirely.
  2. Disable debug mode: Set _PS_MODE_DEV_ to false in config/defines.inc.php to disable the Symfony Profiler and other debug tools.
  3. Scan for compromise: If your store had either of these directories exposed, run eComscan to check for backdoors, webshells, and other signs of compromise.

Read more

Text extracted automatically; images, tables and formatting may be missing. Original: https://sansec.io/research/prestashop-installer-takeover