0x00 前言
好久不见各位!这两天忙着开学,今天才安顿好,终于可以闲下来给大家更新啦。其实这篇文章本来是想着开学前发的,可惜时间实在是不充裕就只能等着开学后发了。
注:本文给出的绕过措施是一个替代方案。
0x01 正文
首先我想问读者朋友们一个问题:在挖掘xss时是否遇到过转义括号的问题?
我相信不少朋友遇到过,例如我这里拿不久前保安姐发的那篇文章的案例给大家看一下:
这个问题还是比较棘手的,一般我们用到括号都是想执行一些函数,但是现在括号被转义了我们就得另寻他路。
不过我想知道有没有读者朋友看过我在轩白公众号发的一篇文章:
这篇文章是我写的,大家也可以支持一下轩白的公众号:隼目安全
,我在这篇文章中分析了一个恶意链接,攻击者主要是利用了网站js造成了一个页面替换的效果,不过这都不是重点,重点是攻击者是通过两个反引号调用的函数:
这是我去年写的文章,我当时在分析这个链接时看到这个操作后令我无比震撼,整个利用链都很巧妙,各位如有兴趣可以去看一下那篇文章。
接下来我在本篇文章中给大家演示一下通过两个反引号调用函数的实际操作:
console.log`1`;
alert`xss`;
我觉得还是很有参考价值的,至于到底怎么实现的,我们就得从es6当中找答案了(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Template_literals
):
通过描述我们可以知道,在js中两个反引号引起来的内容叫做模板字面量,也叫做模板字符串,一般会被用作字符串插值,也就是像如下这种效果:
let expression = 'test';
`string text ${expression} string text`
我们可以通过改变expression变量的值创建不同的字符串,这就是模板字符串的功能之一,另一个功能就是它可以与自定义标签函数
一起使用,来对模板字面量的不同部分执行任何操作。具体调用方法:
也就是说上文中我演示的通过两个反引号调用的那两个函数就叫做标签函数。MDN演示:
最重要的是反引号并不会被转义,例如我就拿php中的经典函数htmlspecialchars
进行测试:
效果显而易见,所以我认为反引号是我们在调用函数时一个比较不错的替代方案,当然仅限于挖掘xss当中。
原文始发于微信公众号(Spade sec):探索挖掘xss中括号被转义的绕过措施
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论