PrestaShop
Tip
Learn & practice AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Learn & practice Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Check the subscription plans!
- Join the ๐ฌ Discord group or the telegram group or follow us on Twitter ๐ฆ @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
From XSS to RCE
- PrestaXSRF: PrestaShop Exploitation Script that elevate XSS to RCE or Others Critical Vulnerabilities. For more info check this post. It provides support for PrestaShop Versions 8.X.X and 1.7.X.X, and allows to:
- (RCE) PSUploadModule(); - Upload a custom Module: Upload a Persistent Module (backdoor) to PrestaShop.
ps_checkout ExpressCheckout silent login account takeover (CVE-2025-61922)
Missing identity validation in the
ps_checkoutmodule< 5.0.5lets an unauthenticated attacker switch the session to any customer by supplying their email.
- Endpoint (unauth):
POST /module/ps_checkout/ExpressCheckout. - Flow:
ExpressCheckout.phpaccepts attacker JSON, only checksorderID, buildsExpressCheckoutRequestand callsExpressCheckoutAction::execute(). - Auth bug: In vulnerable versions
ExpressCheckoutActioncallsCustomerAuthenticationAction::execute()when no user is logged in. That method simply doescustomerExists(<payer_email>)andcontext->updateCustomer(new Customer($id)), so email existence == login (no password/token check). - Attacker-controlled email field:
order.payer.email_addressinside the JSON payload is read byExpressCheckoutRequest::getPayerEmail().
Exploitation steps
- Collect any registered customer email (admin is separate and not affected by this flow).
- Send an unauthenticated POST to the controller with
orderIDplus the victim email inorder.payer.email_address. - Even if the endpoint returns
500, the response will include cookies for the victimโs customer context (session already switched), enabling PII access or purchasing with saved cards.
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"}}}
References
- CVE-2025-61922: Zero-Click Account Takeover on Prestashop (blog)
- GitHub Advisory GHSA-54hq-mf6h-48xh
Tip
Learn & practice AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Learn & practice Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Check the subscription plans!
- Join the ๐ฌ Discord group or the telegram group or follow us on Twitter ๐ฆ @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.


