PrestaShop

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

De XSS à RCE

  • PrestaXSRF: Script d’exploitation PrestaShop qui élève XSS à RCE ou d’autres vulnérabilités critiques. Pour plus d’infos voir this post. Il offre support pour les versions PrestaShop 8.X.X et 1.7.X.X, et permet :
  • (RCE) PSUploadModule(); - Upload a custom Module : Téléverse un module persistant (backdoor) sur PrestaShop.

ps_checkout ExpressCheckout silent login account takeover (CVE-2025-61922)

Validation d’identité manquante dans le module ps_checkout < 5.0.5 permet à un attaquant non authentifié de basculer la session sur n’importe quel client en fournissant son email.

  • Endpoint (non authentifié) : POST /module/ps_checkout/ExpressCheckout.
  • Flow : ExpressCheckout.php accepte le JSON de l’attaquant, ne vérifie que orderID, construit ExpressCheckoutRequest et appelle ExpressCheckoutAction::execute().
  • Auth bug : Dans les versions vulnérables ExpressCheckoutAction appelle CustomerAuthenticationAction::execute() quand aucun utilisateur n’est connecté. Cette méthode fait simplement customerExists(<payer_email>) et context->updateCustomer(new Customer($id)), donc existence de l’email == connexion (pas de vérification de mot de passe/token).
  • Champ email contrôlé par l’attaquant : order.payer.email_address dans le payload JSON est lu par ExpressCheckoutRequest::getPayerEmail().

Exploitation steps

  1. Récupérer n’importe quel email client enregistré (le compte admin est séparé et non affecté par ce flux).
  2. Envoyer un POST non authentifié au controller avec orderID plus l’email de la victime dans order.payer.email_address.
  3. Même si l’endpoint renvoie 500, la réponse inclura des cookies pour le contexte client de la victime (session déjà basculée), permettant l’accès aux PII ou l’achat avec des cartes enregistrées.
POST /module/ps_checkout/ExpressCheckout HTTP/1.1
Host: `<target>`
Content-Type: application/json
Content-Length: 72

{"orderID":"1","order":{"payer":{"email_address":"victim@example.com"}}}

Références

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks