Skip to content
KitploitKITPLOIT
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/toanln-cov/cve-2026-76564
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebSécurité WebArticles et Recherche
GitHubtoanln-cov/cve-2026-76564

CVE-2026-76564

XSS stocké via User-Agent dans la vue des commandes de l'administration de PhocaCart

Voir le dépôt
il y a 3 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

XSS stockée via User-Agent dans la vue de commande admin dans PhocaCart

PhocaCart ≤ 6.1.7 — Un attaquant non authentifié stocke une charge utile XSS via le passage de commande. S'exécute dans le contexte du navigateur administrateur

CVE CVSS v4.0 CWE-79 Affected Researcher


RÉSUMÉ

PhocaCart 6.1.7 pour Joomla stocke l'en-tête HTTP brut User-Agent des demandes de passage de commande dans la table de la base de données des commandes lorsque l'option de configuration store_user_agent est activée. La valeur stockée est ensuite rendue sans encodage HTML dans la vue d'édition de commande administrateur via itemText() dans Adminview.php.

Un attaquant non authentifié peut passer une commande avec un conçu contenant une charge utile JavaScript. Lorsqu'un administrateur ouvre la commande dans le backend, la charge utile s'exécute dans le contexte du navigateur admin — permettant le détournement de session, le vol d'identifiants ou des actions administratives non autorisées.

Télécharger l’outil
User-Agent

La vulnérabilité nécessite que store_user_agent = 1 (non défaut) soit activé. Comme cette option est un choix délibéré de l'administrateur pour collecter des statistiques de navigateur, les boutiques concernées sont celles où le propriétaire de la boutique a activé la fonctionnalité — rendant l'exploitation totalement silencieuse du point de vue de l'attaquant.


VERSIONS AFFECTÉES

COMPOSANTVULNÉRABLETESTÉ SURCORRIGÉ
PhocaCart (com_phocacart)5.0.0 – 6.1.7Joomla 5.4.7 + PhocaCart 6.1.7 + MariaDB 10.66.1.8

DÉTAILS DE LA VULNÉRABILITÉ

Type : XSS stockée (CWE-79) — ciblant l'administrateur Authentification requise : Aucune pour injecter. Administrateur pour déclencher Jeton CSRF requis : Oui (jeton CSRF Joomla standard requis pour le passage en caisse) Fichier : administrator/components/com_phocacart/libraries/Phoca/Render/Adminview.php:382

Cause racine

Lorsque store_user_agent = 1, la méthode PhocacartUtils::getUserAgent() renvoie $_SERVER['HTTP_USER_AGENT'] sans aucune assainissement. Cette chaîne brute est stockée dans #__phocacart_orders (tronquée à 200 caractères — insuffisant pour empêcher les XSS). Lorsqu'un administrateur consulte la commande dans le backend, itemText() concatène la valeur stockée directement dans la réponse HTML sans appel à htmlspecialchars().

Flux de données :

root@kitploit:~
Attacker sends checkout request:
  User-Agent: <script>alert(document.domain)</script>

    utils.php:334   PhocacartUtils::getUserAgent()
    └─ return (string) $_SERVER['HTTP_USER_AGENT']   // raw, no sanitization
        order.php:413  $d['user_agent'] = substr($user_agent, 0, 200)
        └─ INSERT INTO #__phocacart_orders (user_agent) VALUES ('<script>...</script>')

Admin opens order in backend:
    edit.php:84    echo $r->itemText($this->itemcommon->user_agent, ...)
    Adminview.php:382  '<div class="controls >' . $item . '</div>'
                                           // → NO htmlspecialchars()
    → Browser renders: <div><script>alert(document.domain)</script></div>
    → XSS fires in administrator's browser

ORDER.PHP — PHASE DE STOCKAGE (SOURCE VULNÉRABLE)

administrator/components/com_phocacart/libraries/phocacart/order/order.php:424

root@kitploit:~
$user_agent = PhocacartUtils::getUserAgent(); // reads $_SERVER['HTTP_USER_AGENT'] raw
$d['user_agent'] = substr($user_agent, 0, 200); // stored in DB unfiltered

ADMINVIEW.PHP:382 — PHASE DE RENDU (SINK VULNÉRABLE)

root@kitploit:~
// No htmlspecialchars() applied:
$output .= '  <div class="controls ' . $class . '">' . $item . '</div>' . "\n";

Appelé depuis administrator/components/com_phocacart/views/phocacartorder/tmpl/edit.php:84 :

root@kitploit:~
echo $r->itemText($this->itemcommon->user_agent, Text::_('COM_PHOCACART_USER_AGENT'), '', 'user_agent');

La fonction itemText() transmet $item (la valeur user_agent stockée) directement dans la sortie HTML sans encodage, ce qui en fait le sink principal. Le corriger au niveau du sink protège tous les appelants de itemText().


PREUVE DE CONCEPT

L'attaque nécessite d'effectuer un passage de commande complet avec un en-tête User-Agent malveillant. Le jeton CSRF doit d'abord être obtenu car le contrôleur de passage en caisse de Joomla le valide.

0. Prérequis — Activer le stockage des informations User Agent

Dans l'administration Joomla, accédez à Composants → Phoca Cart → Options → Onglet Principal → Options de statistiques. Définissez Store User Agent Information = Oui et enregistrez.

Prérequis : Store User Agent Information = Oui

1. Obtenir le jeton CSRF

L'attaquant visite la vitrine de la boutique pour extraire un jeton CSRF Joomla valide requis par le contrôleur de passage en caisse. Le jeton apparaît dans le code source HTML ou la configuration JavaScript de n'importe quelle page de la boutique.

Étape 1 : L'attaquant obtient le jeton CSRF depuis la vitrine de la boutique via Burp Suite

2. Ajouter un produit au panier

L'attaquant ajoute un produit au panier via le point de terminaison AJAX de passage en caisse en utilisant un User-Agent bénin. Cela fait passer la session de passage en caisse à l'état suivant.

Étape 2 : Ajout d'un produit au panier — POST checkout.add

3. Enregistrer l'adresse de facturation

L'attaquant soumet les informations de facturation pour faire avancer la machine à états du passage en caisse.

Étape 3 : Enregistrement de l'adresse de facturation — Burp Suite

4. Enregistrer le mode de livraison

L'attaquant sélectionne un mode de livraison pour passer au paiement.

Étape 4 : Enregistrement du mode de livraison — Burp Suite

5. Enregistrer le mode de paiement

L'attaquant sélectionne un mode de paiement (par exemple, paiement à la livraison).

Étape 5 : Enregistrement du mode de paiement — Burp Suite

6. Injecter la charge utile — Passer commande avec un User-Agent malveillant

Étape d'injection critique. L'attaquant passe la commande finale via task=checkout.order avec l'en-tête User-Agent défini sur la charge utile XSS. La tâche checkout.order lit le HTTP_USER_AGENT brut et le stocke sans échappement dans #__phocacart_orders.user_agent.

root@kitploit:~
POST /index.php/shop/checkout HTTP/1.1
Host: TARGET
User-Agent: <script>alert(document.domain)</script>
Content-Type: application/x-www-form-urlencoded

phcheckouttac=1&task=checkout.order&option=com_phocacart&return=&<CSRF_TOKEN>=1

Résultat : commande créée. La base de données stocke user_agent = '<script>alert(document.domain)</script>'.

Étape 6 : Passation de commande avec User-Agent malveillant — charge utile injectée dans la base de données

7. L'administrateur consulte la liste des commandes

L'administrateur accède à Composants → Phoca Cart → Commandes. La commande injectée apparaît dans la liste. Le XSS n'est pas encore déclenché à ce stade.

Étape 7 : Liste des commandes admin dans le backend Joomla — commande injectée visible

8. Le XSS se déclenche — l'administrateur ouvre le détail de la commande

Lorsque l'administrateur clique sur la commande pour ouvrir la vue d'édition, le user_agent stocké est rendu sans échappement via itemText(). JavaScript s'exécute immédiatement.

URL de déclenchement :

root@kitploit:~
/administrator/index.php?option=com_phocacart&view=phocacartorder&layout=edit&id=<ORDER_ID>

Étape 8 : La charge utile XSS s'exécute dans le navigateur de l'administrateur — alert(document.domain) confirme le contexte d'exécution


IMPACT

  1. Détournement de session admin — La charge utile XSS peut exfiltrer le cookie de session de l'administrateur, accordant un accès complet au backend sans identifiants.
  2. Actions admin non autorisées — S'exécutant dans le contexte du navigateur admin, la charge utile peut effectuer n'importe quelle action backend : créer des comptes privilégiés, installer des extensions malveillantes ou modifier le contenu.
  3. Backdoor persistante — Une charge utile qui installe un web shell ou crée un compte admin frauduleux persiste au-delà de l'événement XSS lui-même, donnant à l'attaquant un accès durable au serveur.

RÉFÉRENCES

  • CVE : https://www.cve.org/CVERecord?id=CVE-2026-76564
  • NVD : https://nvd.nist.gov/vuln/detail/CVE-2026-76564
  • Avis GitHub : https://github.com/advisories/GHSA-98mw-pj3j-99v2
  • Dépôt du fournisseur : https://github.com/PhocaDesign/PhocaCart