备注中的存储型 XSS
在对一个使用 OpenKM 的客户进行渗透测试时,我们在应用程序的备注部分发现了一个存储型 XSS。基本上,在存储备注时,某些普通 HTML 被允许并按原样渲染。如你所知,
然而,我们发现,在 <a> 标签中使用 "javascript:" 可以绕过该清理/替换规则。
要复现该问题,你可以在备注部分提交以下载荷。
<a href='javascript:alert(1)'>Click here for more info</a>
要触发该载荷,需要诱使用户点击它。
影响:低权限用户可以提交恶意 javascript 载荷来记录键盘输入,或将用户重定向到恶意网站,或在受害者的上下文中提交数据,当受害者点击该链接时即会触发。
受影响的应用区域: 所有备注部分。
受影响版本: 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(中危 5.4)
建议: 改进清理逻辑,或许可以完全替换 'javascript' 关键字。或者只需添加一条额外规则来替换 'javascript:'
参考资料: 修复: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