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
CVE-2025-68147-OSPOS-Stored-XSS — Dépôt de PoC pour CVE-2025-68147 : Cross-Site Scripting stocké (XSS) dans OpenSourcePOS. La vulnérabilité permet une élévation de privilèges via l'injection de JavaScript malveillant dans le module Store Config. Inclut les détails de la charge utile et la vérification du correctif (v3.4.0). Chercheur en sécurité : Aditya Singh (Nixon-H). | Kitploit
Outils/GitHubGitHub/nixon-h/cve-2025-68147-ospos-stored-xss
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubnixon-h/cve-2025-68147-ospos-stored-xss

CVE-2025-68147-OSPOS-Stored-XSS

Voir le dépôt

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 →

À propos

21il y a 2 moisPas encore vérifié

Dépôt de PoC pour CVE-2025-68147 : Cross-Site Scripting stocké (XSS) dans OpenSourcePOS. La vulnérabilité permet une élévation de privilèges via l'injection de JavaScript malveillant dans le module Store Config. Inclut les détails de la charge utile et la vérification du correctif (v3.4.0). Chercheur en sécurité : Aditya Singh (Nixon-H).

Partager

CVE-2025-68147 : Cross-Site Scripting (XSS) stocké dans OpenSourcePOS

MétadonnéesDétails
Identifiant CVECVE-2025-68147
SévéritéÉlevée CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Type de vulnérabilitéCross-Site Scripting stocké (CWE-79)
Versions concernéesOpenSourcePOS v3.4.0, v3.4.1
Version corrigéev3.4.2
Composant vulnérableModule de configuration du magasin (champ Return Policy)
SignaleurAditya Singh (Nixon-H)

📝 Résumé exécutif

Une vulnérabilité de type Cross-Site Scripting (XSS) stocké a été découverte dans le module de configuration du magasin d'OpenSourcePOS. L'application ne parvenait pas à assainir correctement les données saisies par l'utilisateur dans le champ « Return Policy » avant de les stocker dans la table ospos_app_config de la base de données.

Cette faille permettait à un attaquant authentifié disposant de privilèges de configuration (ou à un attaquant exploitant une chaîne CSRF distincte) d'injecter des payloads JavaScript arbitraires. Étant donné que la « Return Policy » est rendue dynamiquement sur chaque reçu de vente, le payload injecté s'exécute automatiquement dans le navigateur de n'importe quel utilisateur—y compris les caissiers à faibles privilèges, les autres administrateurs ou les clients—dès qu'un reçu est généré ou consulté.


🕵️‍♂️ Analyse technique de la cause racine

1. La logique vulnérable

La vulnérabilité se situe dans le modèle de vue des reçus : app/Views/sales/receipt_default.php.

L'application récupère la chaîne « Return Policy » depuis le tableau de configuration global ($this->config['return_policy']) et la prépare pour l'affichage.

  • L'erreur : Les développeurs ont utilisé la fonction PHP native nl2br() pour convertir les sauts de ligne en balises HTML (<br>).
  • La défaillance : nl2br() n'assainit pas les caractères spéciaux HTML. Elle laisse les balises comme <script>, `` et les attributs onload totalement intacts.

Code vulnérable (avant correctif) :

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br($this->config['return_policy']); ?>
</div>

2. Persistance en base de données

Lorsqu'un administrateur enregistre la configuration, le payload est stocké brut dans la base de données.

  • Table : ospos_app_config
  • Clé : return_policy
  • Valeur : Policy Text... <script>alert('XSS')</script>

Comme il n'y a ni assainissement des entrées côté contrôleur (Config.php), ni échappement des sorties côté vue (receipt_default.php), l'application est vulnérable au XSS stocké.


💥 Preuve de concept (PoC)

Vecteur d'attaque

L'attaque cible le panneau de configuration du magasin mais affecte le module Ventes/Reçus.

  1. Point d'entrée : http://[TARGET]/config (requête POST pour enregistrer la configuration)
  2. Point d'exécution : http://[TARGET]/sales/receipt/[SALE_ID]

Exploitation étape par étape

Étape 1 : L'injection Nous nous sommes connectés en tant qu'administrateur et avons navigué vers Configuration du magasin -> Général. Dans la zone de texte « Return Policy », nous avons injecté le payload spécifique suivant :

root@kitploit:~
Standard Return Policy: No Refunds.
<script>alert('XSS_BY_NIXON_SUCCESSFUL')</script>

Étape 2 : Persistance En cliquant sur « Submit », l'application a envoyé une requête POST à /config/save. Le payload a été correctement enregistré dans la base de données.

Étape 3 : Le déclenchement Pour vérifier l'impact sur d'autres utilisateurs :

  1. Nous nous sommes déconnectés puis reconnectés en tant que caissier (compte à faibles privilèges).
  2. Nous avons navigué vers le module Ventes.
  3. Nous avons ajouté un article de test au panier et cliqué sur « Terminer la vente ».
  4. Résultat : L'application redirige vers la vue du reçu (par ex. http://localhost/sales/receipt/1). Le navigateur analyse le div return_policy, rencontre la balise <script> et exécute immédiatement le JavaScript.

Résultat observé : Une boîte d'alerte du navigateur est apparue avec le message : XSS_BY_NIXON_SUCCESSFUL.

📷 Preuve multimédia

Capture d'écran 1 : Le déclenchement de l'alerte

Capture d'écran 2 : Payload dans la configuration

🎥 Démonstration vidéo : Cliquez pour télécharger / regarder la vidéo du PoC


⚠️ Scénarios d'impact

Il s'agit d'une vulnérabilité à portée modifiée (S:C) car l'attaque est stockée sur le serveur mais s'exécute dans le contexte du navigateur de la victime.

  1. Élévation de privilèges et prise de contrôle de compte :
  • Scénario : Un attaquant injecte un payload JavaScript conçu pour voler les cookies de session.
  • Exécution : Un super administrateur consulte un ancien reçu (par ex. /sales/receipt/105). Le script s'exécute silencieusement et envoie document.cookie (contenant l'identifiant ospos_session) au serveur de l'attaquant.
  • Impact : L'attaquant détourne la session du super administrateur et obtient le contrôle total du système sans avoir besoin d'un mot de passe.
  1. Création d'un administrateur auto-propageable :
  • Scénario : Le payload est un script qui utilise AJAX (XMLHttpRequest) pour effectuer des actions administratives.
  • Exécution : Lorsqu'un administrateur connecté consulte le reçu, le script force son navigateur à envoyer une requête POST masquée vers /employees/save.
  • Impact : Un nouveau compte administrateur (par ex. hacker / password123) est créé instantanément en arrière-plan. La victime ne voit que le reçu, tandis que l'attaquant obtient une porte dérobée permanente.
  1. Défacement et phishing :
  • Scénario : L'attaquant modifie le DOM pour altérer les informations financières du reçu.
  • Exécution : Le script « Return Policy » réécrit le pied de page ou les instructions de paiement.
  • Impact : Les reçus affichent des coordonnées bancaires frauduleuses ou des adresses de portefeuille crypto (« Veuillez transférer le paiement à... »), entraînant une fraude financière contre les clients ou l'entreprise.

🛡️ Remédiation

La vulnérabilité a été corrigée dans OpenSourcePOS v3.4.2.

Le mainteneur a appliqué un correctif qui implémente un encodage de sortie contextuel (Context-Aware Output Encoding). La valeur de configuration est désormais encapsulée dans la fonction globale d'assistance esc() de CodeIgniter avant d'être transmise à nl2br().

Le correctif (commit 22297a) :

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br(esc($this->config['return_policy'])); ?>
</div>

Vérification : Après la mise à niveau vers v3.4.2, le même payload est rendu sous forme de texte inoffensif :

Standard Return Policy: No Refunds. &lt;script&gt;alert('XSS_BY_NIXON_SUCCESSFUL')&lt;/script&gt;


📅 Chronologie de divulgation

  • 2025-12-12 : Vulnérabilité découverte par Aditya Singh (Nixon-H) lors d'un audit de sécurité manuel.
  • 2025-12-13 : Rapport de divulgation responsable envoyé au mainteneur (Jeroen Peelaerts) par e-mail/GitHub.
  • 2025-12-14 : Vulnérabilité confirmée par le mainteneur. CVE-2025-68147 réservé.
  • 2025-12-14 : Correctif développé (commit 22297a) et vérifié par le chercheur.
  • 2025-12-19 : Correctif publié dans la version 3.4.2.
  • 2025-12-19 : Divulgation publique via GitHub Security Advisory.

🔗 Références

  • Avis : GHSA-xgr7-7pvw-fpmh
  • Correctif : Commit 22297a
  • Signaleur : Aditya Singh (Nixon-H)
Télécharger l’outil