首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
WEB安全
发新帖
0
0
ES6中的模板字符串和新XSS Payload
发表于: 2016-11-10 14:45
3618
ES6中的模板字符串和新XSS Payload
阿里安全
1
2016-11-10 14:45
3618
ES6中的模板字符串和新XSS Payload
众所周知,在XSS的实战对抗中,由于防守方经常会采用各种各样严格的过滤手段来过滤输入,所以我们使用的XSS Payload也会根据实际情况作出各种各样的调整,最常见的如避免括号,避免引号,避免关键字等,以绕开过滤函数的检查,从而成功将代码注入到网页中运行。
在传统的XSS Payload变形中,常用的无非有以下几种:
1. 使用String.fromCharCode来避免关键字,如String.fromCharCode(97,108,101,114,116,40,49,41);
2. 使用URL编码来避免括号的识别,如location=’alert%281%29’;
3.使用正则对象的特点来避开引号,如alert(/1/);
在多年的研究中基本上传统的变形手段都被研究的差不多了,很难找到创新的绕开手段。
然而,近几年ECMAScript新版本的不断发展和推行,在带来了各种激动人心的语言特性的同时,也不可避免地带来了一些新的安全挑战。本文中所说的模板字符串,
便是ECMAScript 6草案中的一种新特性
。
如
MDN
中所述,模板字符串(Template literals)允许嵌入表达式,并且支持多行字符串和字符串插补特性。基本语法为以下几种:
其中
第一行为最基本用法
,即使用反引号 (‘`’) 来代替普通字符串中的用双引号和单引号。
第二行为多行字符串用法
,即反引号中文本可以直接接受换行而不必使用\n换行符来强制换行。
第三行则为模板字符串的最核心用法
,即反引号中的${expression}占位符中expression可以为任意的JavaScript表达式,甚至为模板字符串。
第四行则为使模板字符串变强大的最主要原因,
如果一个模板字符串由表达式开头,则该字符串被称为带标签的模板字符串
,该表达式通常是一个函数,它会在模板字符串处理后被调用,在输出最终结果前,你都可以在通过该函数对模板字符串来进行操作处理。
第三行的用法我们称之为“表达式插补“,在普通字符串中嵌入表达式时,必须使用如下语法:
现在通过模板字符串,我们可以使用一种更优雅的方式来表示:
第四行的用法我们称之为”带标签的模板字符串“,模板字符串的一种更高级的形式称为带标签的模板字符串。它允许您通过标签函数修改模板字符串的输出。标签函数的第一个参数是一个包含了字符串字面值的数组(在本例中分别为“Hello”和“world”);第二个参数,在第一个参数后的每一个参数,都是已经被处理好的替换表达式(在这里分别为“15”和“50”)。 最后,标签函数返回处理好的字符串。在后面的示例中,标签函数的名称可以为任意的合法标示符。
在了解了以上知识后,我们不难发现,对于一个最简单的XSS Payload:alert(‘A’)来说,我们可以利用上述例子第一行的知识,使用“`”来代替引号,即成为alert(`A`)。之后,使用第四行的标签用法,我们可以直接去除括号,将alert作为标签,写成 alert `A`。最后,由于ECMAScript 6中支持直接用
码点
(code point)来表示Unicode字符,即直接写成"反斜杠+u+码点"。因此为避免alert关键字被识别,我们可以使用Unicode字符来替换alert几个字符,将payload写成\u0061\u006c\u0065\u0072\u0074`A`。 此时最终的payload已经完全见不到alert关键字,括号,以及引号了。测试结果如下:
如果需要将这个payload当做字符串作为函数参数,则可以按照表达式插补的写法,直接在外层套一个`${}`即可,例如:`${alert `A`}` 或 `${\u0061\u006c\u0065\u0072\u0074`A`}` 。则console.log(`${alert `A`}`)也可以弹出。
以上的方法经测试,在最新版本的Chrome,Firefox以及Edge浏览器中均可以执行。我们可以看出,ES6的新方法给我们带来便利的同时,也给XSS字符的安全监测带来了新的挑战。
作者:负羽,更多安全类文章,请访问
阿里聚安全博客
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
收藏
・
0
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
2
)
medas
雪 币:
96
活跃值:
(175)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
31
粉丝
0
关注
私信
medas
2
楼
谢谢分享,受到了启发
2017-9-15 13:16
0
wwihacker
雪 币:
274
活跃值:
(87)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
22
粉丝
0
关注
私信
wwihacker
3
楼
谢谢分享,学习ing
2017-9-17 20:13
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
阿里安全
1
108
发帖
123
回帖
70
RANK
关注
私信
他的文章
[推荐]阿里90后工程师利用ARM MMU硬件特性开启安卓8终端的上帝模式
10658
[分享] RSAC 2018:人工智能成为驱动网络安全的新 “引擎”
2505
[分享]阿里安全X实验室最新黑科技:“人脸识别”3.0版可毫秒识破假人脸
2458
[分享]前沿 | 抗击黑产 阿里安全八大实验室首秀技术实力
3175
[分享]阿里云在RSAC 2018上宣布 将在西雅图建立安全实验室
2944
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部