
Stored XSS proof-of-concept für den OpenKM Notizen-Bereich, der einen javascript:-Bypass der Sanitisierungsregeln demonstriert, mit CVSS 3.1 Bewertung und Behebungsanleitung.
Gespeichertes XSS in Notizen
Ein gespeichertes XSS wurde im Notizenbereich der Anwendung gefunden, während wir einen Kunden pentesteten, der OpenKM verwendete. Grundsätzlich wurde beim Speichern von Notizen irgendwie normales HTML erlaubt und unverändert gerendert. Wie bekannt, wurden <script>-Tags und JavaScript on-*-Ereignisse als Teil des XSS-Bereinigungssets bereinigt/ersetzt.
Wir stellten jedoch fest, dass die Verwendung von "javascript&colon:" in einem <a>-Tag diese Bereinigung/Ersetzungsregel umging.
Um das Problem zu reproduzieren, können Sie den folgenden Payload im Notizenbereich einreichen.
<a href='javascript:alert(1)'>Click here for more info</a>
Um den Payload auszulösen, muss ein Benutzer dazu verleitet werden, darauf zu klicken.
Auswirkung: Ein Benutzer mit niedrigen Berechtigungen kann bösartige JavaScript-Payloads einreichen, um Tastenanschläge aufzuzeichnen, Benutzer auf bösartige Websites umzuleiten oder Daten im Kontext des Opfers zu übermitteln, die ausgelöst werden, wenn das Opfer auf den Link klickt.
Betroffene Bereiche in der Anwendung: Alle Notizenbereiche.
Betroffene Versionen: 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)
Empfehlung: Verbessern Sie die Bereinigung, vielleicht indem Sie das Schlüsselwort 'javascript' vollständig ersetzen. Oder fügen Sie einfach eine zusätzliche Regel hinzu, um 'javascript:' zu ersetzen.
Referenzen: Behebung: 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