著名安全研究员剑心曾发布一篇文章叫做《疯狂的跨站之行》,里面讲述了一种特别的Xss利用技巧,就是当应用程序没有过滤Xss关键字符人(如<、>)却对输入字符长度有限制的情况下,如何使用“拆分法”执行跨站脚本代码,
Xss拆分跨站法脚本安全
。 当时剑心发现某个网站存在Xss漏洞,漏洞出现在评论的联系方式处,但是,这处只能写入30个字符长度,必须的
幸运的是,网站的评论处可以重复留言,也就是说可以提交多个脚本标记,于是剑心造出以下Expliot:
上述代码的作用是引入一个字符串变量Z,并且将下行代码拆分开来:
document.write(’
然后分几次将其嵌入到变量Z中,最后通过eval(Z)巧妙地执行代码,
电脑资料
《Xss拆分跨站法脚本安全》(https://www.unjs.com)。由此可见,拆分法跨站的核心是:把跨站代码分成几个片段,然后再使用某种方式将其拼凑在一起执行,这和缓冲区溢出的shellcode的利用方式有异曲同工之妙。
为了让大家了解这种技巧的精髓,我们举一个简单的例子。
假设有个博客存在Xss漏洞,该Xss出现在标题处,并且对输入字符的长度有限制,此时可以使用拆分法连续发表4篇文章,分别如下所示:
经过程序的处理后,最终页面返回结果如下:
/**/在脚本标签中是注释的意思,所以/**/之内的字符会自动被忽略,以上代码最终转变成:
然后,依次赋值给Z变量,得到:
于是, 下篇文章将会讲述一个“拆分跨站法”思想的Xss案例,敬请关注。 ByJ4s0n.