PrestaShop

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

XSSからRCEへ

  • PrestaXSRF: PrestaShop Exploitation Script that elevate XSS to RCE or Others Critical Vulnerabilities. 詳細はこの記事を参照してください。PrestaShop Versions 8.X.X and 1.7.X.X に対応しており、以下を可能にします:
  • (RCE) PSUploadModule(); - Upload a custom Module: 永続的なモジュール(バックドア)を PrestaShop にアップロードします。

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

ps_checkout module < 5.0.5 における本人確認の検証不足により、未認証の攻撃者がメールアドレスを提供することで任意の顧客にセッションを切り替えられる

  • Endpoint (unauth): POST /module/ps_checkout/ExpressCheckout.
  • Flow: ExpressCheckout.php は攻撃者制御の JSON を受け取り、orderID のみを確認し、ExpressCheckoutRequest を構築して ExpressCheckoutAction::execute() を呼び出します。
  • Auth bug: 脆弱なバージョンでは、ExpressCheckoutAction は誰もログインしていない場合に CustomerAuthenticationAction::execute() を呼び出します。そのメソッドは単に customerExists(<payer_email>) を実行し、context->updateCustomer(new Customer($id)) を行うだけなので、メールアドレスの存在=ログイン(パスワード/トークンの確認なし)となります。
  • Attacker-controlled email field: JSON ペイロード内の order.payer.email_addressExpressCheckoutRequest::getPayerEmail() により読み取られます。

利用手順

  1. 登録済みの顧客メールアドレスを収集する(管理者は別扱いで、このフローの影響を受けません)。
  2. 認証なしでコントローラに POST を送り、orderID と被害者のメールアドレスを order.payer.email_address に含める。
  3. エンドポイントが 500 を返しても、レスポンスには被害者の顧客コンテキスト用のクッキーが含まれる(セッションは既に切り替わっている)ため、PII へのアクセスや保存済みカードでの購入が可能になる。
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"}}}

参考資料

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする