Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-97657 — PoC Python pour CVE-2026-97657 : forge des jetons de récupération AES-CTR via la malléabilité XOR pour contourner l'authentification et prendre le contrôle de comptes WordPress dans Abandoned Cart Pro ≤10.8.0. | Kitploit
Outils/GitHubGitHub/murrez/cve-2026-97657
Escalade de PrivilègesScanners de VulnérabilitésAnalyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebCryptographieAuthentification
GitHubmurrez/cve-2026-97657

CVE-2026-97657

PoC Python pour CVE-2026-97657 : forge des jetons de récupération AES-CTR via la malléabilité XOR pour contourner l'authentification et prendre le contrôle de comptes WordPress dans Abandoned Cart Pro ≤10.8.0.

1il y a 22 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

CVE-2026-97657 — contournement d'authentification dans Abandoned Cart Pro for WooCommerce

PoC en Python 3 pour CVE-2026-97657 — Abandoned Cart Pro for WooCommerce (Tyche Softwares) ≤ 10.8.0. CNA : Wordfence.

ProduitAbandoned Cart Pro for WooCommerce
Affecté≤ 10.8.0 (mettre à niveau vers une version corrigée supérieure à 10.8.0)
CWECWE-639 — contournement d'autorisation via une clé contrôlée par l'utilisateur
CVSS 3.19.8 Critique
Marqueur de vérificationPOCBIT-97657-OK (vérification de session/admin)
PoCbithttps://pocbit.org/pocs/cve-2026-97657

Description

Les liens de récupération utilisent des jetons AES-CTR sans MAC (disposition compatible avec Wcal_Aes_Ctr : nonce CTR de 8 octets + texte chiffré, en base64). Le plugin charge la encrypt_key propre à chaque e-mail depuis le paramètre de requête user_email contrôlé par l'attaquant. Dans wcap_email_track_links() (Pro ; analogue Lite wcal_email_track_links()), la vérification wcap_nonce / HMAC ne s'exécute que lorsque wcap_nonce est non vide, donc l'omettre contourne la vérification d'intégrité. Après le déchiffrement, l'abandoned_id (ID de la ligne de panier) est utilisé sans prouver qu'il appartient à cet e-mail, puis wp_set_auth_cookie() est exécuté lorsque la connexion automatique est activée (par défaut).

Un attaquant non authentifié disposant d'une URL de récupération légitime issue de son propre e-mail de rappel peut malformer par XOR le texte chiffré CTR pour remplacer l'ID de panier intégré par l'ID de panier abandonné d'une victime (de même longueur que l'ID source), ouvrir l'URL forgée sans wcap_nonce, et se connecter en tant que la victime (y compris les administrateurs ayant abandonné un panier).

Forme typique de l'URL (Pro) :

GET /?wacp_action=checkout_link&[email protected]&validate=<token>

(Des variantes wcap_action / wcal_action existent ; les URLs de track-links peuvent inclure des paramètres supplémentaires tels que c=.)


Prérequis

cd CVE-2026-97657
pip install -r requirements.txt
  • Python 3.9+
  • Dépendances : requests, urllib3

Aperçu de l'utilisation

ModeObjectifArguments requis
check (par défaut)Lire le readme.txt du plugin, signaler une version ≤ 10.8.0-t URL ou --list FILE
forgeConstruire localement une URL de récupération forgée (sans HTTP)--recovery-link, --source-cart-id, --target-cart-id
exploitForger le token + requête HTTP GET + vérifier la session WordPressIdentique à forge

Flux de travail recommandé (laboratoire autorisé) :

  1. check en masse ou unique — confirmer le slug du plugin + version ≤ 10.8.0.
  2. forge — valider le remplissage de l'ID de panier et la forme de l'URL avant d'envoyer du trafic.
  3. exploit — une requête GET vers l'URL de récupération forgée ; confirmer les cookies + /wp-admin/.

Exploit/forge n'utilise pas -t / --list. L'hôte cible est extrait de --recovery-link (schéma + hôte).


Prérequis (exploit / forge)

ExigenceRaison
Une URL de récupération légitimeFournit un nonce CTR valide + le chiffré et (généralement) votre ligne user_email / encrypt_key dans ac_sent_history
Plugin ≤ 10.8.0 avec auto-login activé (par défaut)Les versions corrigées ou l'auto-login désactivé bloquent wp_set_auth_cookie()
Utilisateur WordPress enregistré victime avec une ligne de panier abandonnéLe chemin de prise de contrôle connecte le user_id depuis ac_abandoned_cart_history ; les paniers purement invités utilisent une branche différente
URL checkout_link fortement préféréeLe texte en clair est {abandoned_cart_id}&url=.... Les tokens track_links encodent email_sent_id, pas l'ID de panier — un mauvais type d'ID casse le forge
IDs de longueur égaleLa malléabilité XOR du CTR ne permute les octets que 1:1 ; compléter avec des zéros (voir ci-dessous)

Obtention de --recovery-link

  1. Sur la boutique cible, inscrivez-vous/connectez-vous en tant qu'utilisateur que vous contrôlez.
  2. Ajoutez des produits au panier et quittez le paiement (abandonnez).
  3. Attendez un e-mail de rappel (ou raccourcissez les délais d'expiration dans un laboratoire que vous possédez).
  4. Copiez le checkout_link complet depuis l'e-mail (ou depuis les webhooks / l'export du plugin si activé).

Exemples de formes Pro (d'après la documentation du fournisseur / les webhooks) :

https://shop.example/?wacp_action=checkout_link&validate=<base64-token>
https://shop.example/?wacp_action=checkout_link&[email protected]&validate=<token>
https://shop.example/?wacp_action=track_links&[email protected]&validate=<token>&c=<coupon-token>

Collez l'URL exactement comme dans l'e-mail (y compris validate ; l'ordre des paramètres de requête n'a pas d'importance).

Obtention des ID de lignes de panier

SourceChamp
WooCommerce Abandoned Cart → Cart details (admin)ID du panier abandonné (clé primaire de la base de données)
Charge utile du Webhook (contexte wcap_cart, checkout_link)"id": "383" sur la ressource panier
MySQL (lab)wp_ac_abandoned_cart_history.id (le préfixe de table Pro peut différer)

--source-cart-id doit être l'ID à l'intérieur du texte en clair de votre jeton (votre ligne de panier abandonné). --target-cart-id est la ligne de la victime dans la même table.

Remplissage par zéros (même longueur)

Le PoC rejette les longueurs différentes. Complétez les deux ID à la même largeur :

Source (le vôtre)Cible (victime)OK ?
383001Oui (3 caractères)
03830001Oui (4 caractères)
3831Non — exécutez forge avec 0383 / 0001 à la place

Référence CLI

OptionModesSignification
-t, --targetcheckRacine du site WordPress, par ex. https://shop.example.com
--list FILEcheckUne URL de site par ligne ; les commentaires # sont ignorés
--modeallcheck (par défaut), forge, exploit
--recovery-link URLforge, exploitURL de récupération complète issue de l'e-mail de rappel
--source-cart-idforge, exploitL'ID de votre ligne de panier abandonné (dans le texte en clair du jeton)
--target-cart-idforge, exploitL'ID de la ligne de panier abandonné de la victime (même longueur de chaîne)
-j Ncheck (list)Workers parallèles (par défaut 8)
--timeout SECcheck, exploitDélai d'expiration HTTP (par défaut 15)
--insecurecheck, exploitDésactiver la vérification du certificat TLS
--jsonl FILEcheck, exploitAjouter un objet JSON par exécution
--vuln-list FILEcheckÉcrire les URL dont la version ≤ 10.8.0
-q, --quietallMoins de sortie console
--no-colorallTerminal en clair

Codes de sortie

CodeQuand
0Exploit : success: true ; forge : toujours ; check : toujours (-t unique)
1Exploit : échec de la vérification de connexion/admin
2Exécution de la liste check sans sémantique -t (informatif)

Mode check

python poc.py -t https://shop.example.com --mode check
python poc.py --list targets.example.txt --mode check -j 16 --vuln-list hits.txt --jsonl scan.jsonl

Sondes :

Télécharger l’outil