PrestaShop

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Od XSS do RCE

  • PrestaXSRF: PrestaShop Exploitation Script, który eskaluje XSS do RCE lub innych krytycznych podatności. Po więcej informacji sprawdź this post. Oferuje wsparcie dla PrestaShop Versions 8.X.X and 1.7.X.X, i pozwala na:
  • (RCE) PSUploadModule(); - Upload a custom Module: Wgrać trwały moduł (backdoor) do PrestaShop.

ps_checkout ExpressCheckout — ciche przejęcie konta przez logowanie (CVE-2025-61922)

Brak walidacji tożsamości w module ps_checkout < 5.0.5 pozwala niezalogowanemu atakującemu przełączyć sesję na dowolnego klienta, podając jego adres e-mail.

  • Endpoint (unauth): POST /module/ps_checkout/ExpressCheckout.
  • Przebieg: ExpressCheckout.php akceptuje kontrolowany przez atakującego JSON, sprawdza tylko orderID, tworzy ExpressCheckoutRequest i wywołuje ExpressCheckoutAction::execute().
  • Błąd uwierzytelnienia: W podatnych wersjach ExpressCheckoutAction wywołuje CustomerAuthenticationAction::execute() gdy żaden użytkownik nie jest zalogowany. Ta metoda po prostu wykonuje customerExists(<payer_email>) i context->updateCustomer(new Customer($id)), więc istnienie adresu e-mail == logowanie (brak sprawdzenia hasła/tokenu).
  • Pole email kontrolowane przez atakującego: order.payer.email_address w payloadzie JSON jest odczytywane przez ExpressCheckoutRequest::getPayerEmail().

Kroki eksploatacji

  1. Zbierz dowolny zarejestrowany adres e-mail klienta (konto admina jest oddzielne i nie jest objęte tym przepływem).
  2. Wyślij niezautoryzowany POST do kontrolera z orderID oraz adresem e-mail ofiary w order.payer.email_address.
  3. Nawet jeśli endpoint zwróci 500, odpowiedź będzie zawierać ciasteczka dla kontekstu klienta ofiary (sesja już przełączona), umożliwiając dostęp do danych osobowych (PII) lub dokonywanie zakupów z zapisanymi kartami.
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ódła

Tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks