
Proof-of-concept di XSS persistente per la sezione note di OpenKM, che dimostra un bypass delle regole di sanitizzazione tramite javascript:, con punteggio CVSS 3.1 e indicazioni di remediation.
XSS memorizzato nelle note
Un XSS memorizzato è stato trovato nella sezione delle note dell'applicazione durante un test di penetrazione su un cliente che utilizzava OpenKM. In pratica, quando si salvavano le note, in qualche modo veniva consentito HTML normale che veniva renderizzato così com'era. Come sapete, i tag
Tuttavia, abbiamo scoperto che l'uso di "javascript:" in un tag <a> aggirava quella regola di sanificazione/sostituzione.
Per riprodurre il problema, puoi inviare il seguente payload nella sezione delle note.
<a href='javascript:alert(1)'>Click here for more info</a>
Per attivare il payload, un utente deve essere indotto a cliccarci sopra.
In termini di impatto: un utente con privilegi bassi può inviare payload javascript dannosi per registrare la digitazione dei tasti, reindirizzare gli utenti verso siti web dannosi o inviare dati nel contesto della vittima, che vengono attivati quando la vittima clicca sul link.
Aree interessate nell'applicazione: Tutte le sezioni delle note.
Versioni interessate: 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 (Medio 5.4)
Raccomandazione: Migliorare la sanificazione, magari sostituendo completamente la parola chiave 'javascript'. Oppure aggiungere semplicemente una regola extra per sostituire 'javascript:'
Riferimenti: Correzione: 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