Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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-76564 — XSS stocké via User-Agent dans la vue des commandes de l'administration de PhocaCart | Kitploit
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
16il y a 1 moisPas 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 User-Agent 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.

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 :

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

$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)

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

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

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.

Télécharger l’outil