Une boutique PrestaShop piratée, c'est plus grave qu'un site vitrine : commandes clients, données bancaires, conformité PCI-DSS, réputation. L'attaquant vise l'argent. La réponse doit être chirurgicale et rapide.
Spécificités PrestaShop vs WordPress
| Aspect | WordPress | PrestaShop |
|---|---|---|
| Vecteur principal | Plugin nulled / mot de passe | Module tiers / thème / permissions fichiers |
| Backdoor fréquente | mu-plugins, functions.php |
override/, modules/, tools/smarty/compile |
| Données sensibles | Contenu, utilisateurs | Commandes, clients, CB (si stockées), adresses |
| Conformité | RGPD | RGPD + PCI-DSS (si CB stockées) |
| Nettoyage | Remplacement core | Remplacement core + override + modules + cache Smarty |
Premières minutes : protocole urgence e-commerce
1. Maintenance immédiate (vraie, pas front-office)
# .htaccess racine
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^VOTRE\.IP\.ICI$
RewriteRule ^(.*)$ /maintenance.html [R=302,L]
Page maintenance.html : "Maintenance technique programmée. Vos commandes sont en sécurité. Retour sous peu." Pas de mention "piratage".
2. Changez TOUS les accès (ordre critique) :
- Base de données : nouveau user + pass → maj
app/config/parameters.php - Back-office : tous les employés admin + nouveau mot de passe (20+ car)
- FTP/SFTP : nouveau pass + clés SSH
- Hébergement / serveur : pass + 2FA
- API paiement (Stripe, PayPal, Paybox, etc.) : révoquez les clés API, régénérez, mettez à jour dans le back-office
- Webhooks paiement : vérifiez les URLs, régénérez les secrets
- Cloudflare / CDN / WAF : token, règles, purge cache
3. Informez votre banque / PSP (si paiement direct) : signalez l'incident, demandez surveillance transactions suspectes.
Diagnostic : vecteurs PrestaShop
Outils (dans l'ordre) :
grep -r "eval\|base64_decode\|gzinflate\|str_rot13\|create_function\|assert\|system\|exec\|shell_exec" . --include="*.php" --include="*.tpl" --include="*.js"find . -name "*.php" -mtime -7 -type f(modifiés 7 jours)find . -name "*.tpl" -mtime -7 -type f(templates modifiés)ls -la override/classes/ override/controllers/ modules/*/override/(fichiers override suspects)ls -la tools/smarty/compile/ cache/(fichiers compilés suspects)- Back-office > Paramètres avancés > Performances : "Forcer la compilation" doit être NON en prod
- Base de données :
ps_employee: employés admin inconnusps_configuration:PS_SHOP_DOMAIN,PS_SHOP_DOMAIN_SSL,PS_SSL_ENABLEDps_module: modules non installés mais présents dansmodules/ps_hook_module: hooks suspects
- Vérifiez
modules/: dossiers non officiels, fichiers.phpà la racine du module tools/smarty/compile/: vider complètement (cache Smarty = vecteur #1 réinfection)
Vecteurs PrestaShop les plus vus (nos stats) :
- Module tiers abandonné / nulled : 41 %
- Permissions fichiers trop larges (777 sur
cache/,img/,modules/) : 24 % - Thème / override compromis : 18 %
- Vulnérabilité core non patchée (1.6 / 1.7) : 12 %
- Accès FTP/SSH compromis : 5 %
Nettoyage PrestaShop : méthode par couches
Couche 1 : Core PrestaShop
- Sauvegarde BD complète (
mysqldump) - Identifiez version exacte :
cat config/defines.inc.php | grep _PS_VERSION_ - Téléchargez archive officielle même version (prestashop.com/download)
- Remplacez :
admin/,classes/,controllers/,src/,vendor/,app/,index.php,init.php,config/defines.inc.php(gardez vos params DB),.htaccess(gardez vos règles perso) - Ne touchez pas :
app/config/parameters.php,img/,download/,mails/,themes/votre-theme/(sauf si compromis),modules/(voir couche 2),override/(voir couche 3)
Couche 2 : Modules
- Listez modules installés : Back-office > Modules > Gestionnaire de modules
- Pour chaque module officiel : désinstallez, supprimez dossier
modules/nom-module/, réinstallez depuis source officielle (même version) - Pour chaque module tiers :
- Source officielle dispo ? → même processus
- Module nulled / abandonné / sans source → supprimez, remplacez par équivalent officiel
- Module custom (développé pour vous) : audit code complet, recréez propre si doute
- Videz
tools/smarty/compile/etcache/etvar/cache/(PrestaShop 1.7+)
Couche 3 : Override & Thème
override/classes/etoverride/controllers/: supprimez tout, recréez seulement vos overrides légitimes (vérifiez chaque fichier)- Thème : si thème acheté (ThemeForest, PrestaShop Addons) → réinstallez version propre. Si thème custom → audit chaque
.tpl,.php,.js,.css. Cherchezeval,base64,include,require,$_GET,$_POSTnon sanitizés. - Vérifiez
themes/votre-theme/templates/: pas de.php, que des.tpl
Couche 4 : Base de données
ps_employee: gardez seulement vrais employés, nouveau mot de passe bcrypt pour tousps_configuration:PS_SHOP_DOMAIN,PS_SHOP_DOMAIN_SSL(vos domaines),PS_SSL_ENABLED=1,PS_SSL_ENABLED_EVERYWHERE=1ps_customer: vérifiez pas de comptes admin créés par attaquant (rôle = 1 dansps_customer_group)- Nettoyez
ps_connections(logs connexions),ps_guest(paniers abandonnés > 30 j) - Cherchez injections :
SELECT * FROM ps_cms_lang WHERE content LIKE '%<script>%' OR content LIKE '%eval(%' OR content LIKE '%base64%';(pareil pourps_product_lang,ps_category_lang,ps_cms_category_lang)
Couche 5 : Fichiers statiques & uploads
img/: cherchez.php,.phtml,.htaccess→ supprimezdownload/: même chosemails/: vérifiez pas de fichiers ajoutéstools/smarty/compile/vider entièrementcache/vider entièrementvar/cache/(PS 1.7+) vider entièrementvar/logs/: archivez puis videz (garde trace pour analyse)
Remise en ligne + validation e-commerce
app/config/parameters.php: nouveaux identifiants DB, nouvelle clécookie_key(générez 56 car aléatoires)- Videz tous les caches :
cache/,var/cache/,tools/smarty/compile/, CDN (Cloudflare Purge Everything), Varnish/Redis si utilisé - Back-office > Performances : "Forcer la compilation" = NON, "Cache" = OUI, "CCC" (CSS/JS/HTML) = OUI
- Tests critiques :
- Home, catégorie, produit, panier, tunnel commande (étape par étape)
- Paiement : commande test Stripe/PayPal/Paybox → vérifiez webhook reçu, statut commande OK
- Emails : commande, inscription, mot de passe oublié, contact → reçus
- HTTPS : certificat valide, HSTS, pas de contenu mixte (DevTools > Security)
-
robots.txt,sitemap.xmlpropres - Search Console : soumettre sitemap, inspection URL 10 pages
- Demandez révision Search Console si alerte "site piraté"
Durcissement PrestaShop (spécifique)
- Permissions fichiers :
find . -type f -exec chmod 644 {} \;;find . -type d -exec chmod 755 {} \;;chmod 775 -R img/ cache/ download/ mails/ tools/smarty/compile/ var/cache/ var/logs/(selon config serveur) - Admin : URL personnalisée (pas
/admin), IP whitelist si IP fixe, 2FA (module Google Authenticator natif PS 1.7+) - Mises à jour : Security Patch appliqué sous 24 h (module 1-Click Upgrade ou manuel)
- Permissions modules :
chmod 644sur tous.phpmodules,755dossiers - WAF : Cloudflare (règles OWASP + rate limiting
/admin+ blocage pays à risque) - Sauvegardes : BD quotidienne externalisée + fichiers hebdo + test restauration mensuel
- Monitoring : uptime + intégrité fichiers (script quotidien
find /chemin/boutique -name "*.php" -mtime -1+ alerte email) - PCI-DSS : si CB stockées → audit annuel, scans trimestriels ASV, segmentation réseau
Cas spécifiques PrestaShop
Skimmer paiement (Magecart-like) :
Code JS injecté dans checkout.tpl ou payment.tpl ou via module tiers → vole numéros CB. Cherchez dans : themes/votre-theme/templates/checkout/, modules/*/views/templates/hook/, override/controllers/front/PaymentModule.php. Vérifiez aussi Google Tag Manager / GTM si utilisé (injecteur tiers).
Back-office inaccessible :
Via FTP : renommez modules/ → modules_off/ → accédez au BO. Réactivez modules un par un.
Via BD : UPDATE ps_employee SET passwd = '$2y$10$...' WHERE email = 'votre@email.com'; (hash bcrypt généré via php -r "echo password_hash('nouveau_mdp', PASSWORD_BCRYPT);")
Redirection vers spam :
Cherchez dans : index.php racine, .htaccess, config/defines.inc.php, override/classes/controller/FrontController.php, modules/*/nom_module.php (fonction hookHeader ou hookDisplayHeader).
Alerte hébergeur / suspension :
Demandez liste fichiers détectés. Nettoyez en local, renvoyez propre, demandez réactivation.
Conformité post-incident (RGPD + PCI-DSS)
- RGPD : Notifiez CNIL sous 72 h si données clients compromises (nom, email, adresse, historique commandes). Modèle notification sur cnil.fr.
- PCI-DSS : Si CB stockées/transitées → notifiez votre acquéreur/bank, demandez scan ASV, réévaluez votre niveau de conformité (SAQ A-EP ou D).
- Clients : Email transparent : ce qui s'est passé, quelles données, quoi faire (changer mdp, surveiller CB). Modèle sur cnil.fr.
Coûts & délais (notre grille PrestaShop)
| Niveau | Temps | Coût HT | Inclus |
|---|---|---|---|
| Simple (1 module compromis) | 4-6 h | 350 € | Nettoyage + durcissement + test paiement |
| Moyen (override + module + skimmer) | 8-12 h | 650 € | + audit modules + test tunnel complet |
| Complexe (BD + skimmer + multiples backdoors) | 16-24 h | 1 200 € | + conformité PCI-DSS + scan ASV + rapport CNIL |
Notre intervention : diagnostic sous 2 h, remise en ligne jour même si possible, test tunnel commande complet, monitoring 3 mois. Urgence PrestaShop.
Votre boutique est compromise ? On intervient aujourd'hui. Diagnostic sous 2 h, nettoyage, test tunnel paiement, remise en ligne. Urgence PrestaShop — 06 02 55 17 36.
