HackMD上的可蠕虫化XSS漏洞
在Web安全领域,我通常更偏爱服务器端漏洞而非客户端漏洞(当然能直接获取shell的客户端漏洞除外XD)。但这次发现的XSS漏洞确实有些特别,因此决定分享这个有趣的发现。
漏洞背景
HackMD是一款由台湾开发者打造的Markdown协作平台,被COSCUP、g0v、HITCON等知名研讨会用作官方共笔平台,甚至还是Ethereum的协作平台。其开源代码在GitHub上获得了4500多颗星。
漏洞成因
漏洞位于HackMD前端渲染Markdown时的XSS防御机制中。平台使用npm/xss库进行防护,但在处理HTML注释标签时存在缺陷:
|
|
通过构造特殊注释标签可绕过过滤:
|
|
CSP绕过
HackMD实施了严格的内容安全策略(CSP),但允许加载cdnjs.cloudflare.com的脚本。利用AngularJS库可以轻松绕过:
|
|
漏洞影响
当攻击者与受害者同时编辑同一份文档时,可对所有查看者实施攻击。该漏洞已在最新版CodiMD中修复。