
Preuve de concept de XSS stocké pour la section de notes d'OpenKM, démontrant un contournement des règles d'assainissement via javascript:, avec un score CVSS 3.1 et des conseils de correction.
XSS stocké dans les notes
Un XSS stocké a été découvert dans la section des notes de l'application lors d'un test d'intrusion chez un client utilisant OpenKM. En gros, lors du stockage des notes, du HTML normal était autorisé et rendu tel quel. Comme vous le savez, les balises
Cependant, nous avons découvert que l'utilisation de "javascript&colon:" dans une balise <a> contournait cette règle de nettoyage/remplacement.
Pour reproduire le problème, vous pouvez soumettre la charge utile suivante dans la section des notes.
<a href='javascript:alert(1)'>Click here for more info</a>
Pour déclencher la charge utile, un utilisateur doit être amené à cliquer dessus.
En termes d'impact : un utilisateur de niveau faible peut soumettre des charges utiles javascript malveillantes pour enregistrer les frappes clavier, rediriger les utilisateurs vers des sites web malveillants, ou soumettre des données dans le contexte de la victime, qui sont déclenchées lorsque la victime clique sur le lien.
Zones affectées dans l'application : Toutes les sections de notes.
Versions affectées : OpenKM Community Edition 6.3.11
CVSS 3.1 : CVSS:3.0/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N (Medium 5.4)
Recommandation : Améliorer la sanitization, peut-être en remplaçant entièrement le mot-clé 'javascript'. Ou simplement ajouter une règle supplémentaire pour remplacer 'javascript:'
Références : Correctif : https://github.com/openkm/document-management-system/pull/336 CVE : https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-40317 NIST : https://nvd.nist.gov/vuln/detail/CVE-2022-40317