0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

XSS绕过小思路分享

jf_vLt34KHi 来源:Tide安全团队 2023-05-30 14:28 次阅读

一、白名单绕过

语句输出在标签

比如

chaijie_default.png

1.闭合标签构造语句

在白名单较为宽松的情况下,"和<>都被放出,可以利用">先闭合标签,然后构造https://www.elecfans.com/images/chaijie_default.pngss语句来进行触发。最后结果

">这种是最简单的方法,也很常见。

如果白名单内没有了",可以利用html的解析优先级来逃离引号来触发https://www.elecfans.com/images/chaijie_default.pngss。构造

title><img  data-cke-saved-src=1 src=1 >,在浏览器中会优先解析标签,这样就会优先闭合标签,从而逃出引号的限制来触发https://www.elecfans.com/images/chaijie_default.pngss。

2.闭合属性构造https://www.elecfans.com/images/chaijie_default.pngss

如果现在白名单中没有了<>,那么就不能利用上述方法进行构造,可以考虑闭合src属性,构造新属性来触发https://www.elecfans.com/images/chaijie_default.pngss。构造

chaijie_default.png闭合src,触发https://www.elecfans.com/images/chaijie_default.pngss

如果白名单中<>'"全部被限制,这时https://www.elecfans.com/images/chaijie_default.pngss利用就变的非常困难,但是如果onerror属性可控的话,可以用html实体编码进行绕过,来构造任意的https://www.elecfans.com/images/chaijie_default.pngss语句。https://config.net.cn/tools/HtmlEncode.html 比如chaijie_default.png

3899a1d8-fe07-11ed-90ce-dac502259ad0.png

语句输出在js中

语句直接输出在js代码中是非常危险的,相对应的白名单也会设置的非常严格。

1.constructor

JavaScript语言使用构造函数(constructor)作为对象的模版。constructor属性返回对创建此对象的数组函数的引用。简单来说Object.constructor===Function。

38a4f84e-fe07-11ed-90ce-dac502259ad0.png

在js中我们可以用Function来创建一个函数来构造https://www.elecfans.com/images/chaijie_default.pngss,例如new Function('alert(1)')();,也可以不要new,简化成Function('alert(1)')()。然后将Function等价替换为Object.constructor,Object.constructor('alert(1)')()继续转换为'...'.substr.constructor('alert(1)')()这里的...为任意字符串,'...'.substr为一个Object,所以这个语句跟上面等价。在js中a.b可以写成a['b']的形式,一次上面的语句可以写成'...'['substr']['constructor']('alert(1)')()然后在js中任意字符串都可一写成+ascii码8进制的形式,将语句字符串全部替换,'...'['163165142163164162']['143157156163164162165143164157162']('141154145162164506151')()这样我们在白名单中就不需要字母就可以执行任意的https://www.elecfans.com/images/chaijie_default.pngss语句了。

2.jsfuck

那么如果白名单更加严格,名单当中没有了和数字,这时候我们就需要借助jsfuck。jsfuck源于一门编程语言brainfuck,其主要的思想就是只使用8种特定的符号来编写代码。而jsfuck也是沿用了这个思想,它仅仅使用6种符号来编写代码。它们分别是(、)、+、[、]、!。我们可以直接将alert(1)进行jsfuck编码进行测试。http://www.jsfuck.com/

38a9ffb0-fe07-11ed-90ce-dac502259ad0.png

也可以将Function('alert(1)')()进行编码来创建任意函数执行。

38aef1f0-fe07-11ed-90ce-dac502259ad0.png

二、限制长度绕过

长度限制在20个字符内的绕过。

分段输入https://www.elecfans.com/images/chaijie_default.pngss语句

还是拿

chaijie_default.png

举例,在没有过滤的情况下闭合语句需要">,用到了27个字符,而且基本没有缩短的空间。这时候就需要我们找多个点来分段构造https://www.elecfans.com/images/chaijie_default.pngss。

1.利用注释符


">

我们可以看到,分成3段利用注释符,将每段之间的的代码注释掉,从而将三段之间的https://www.elecfans.com/images/chaijie_default.pngss语句连接起来执行。举个例子:ibuyu cms数据库存储时限制了20个字符select table_schema,table_name,column_name,column_type,column_comment from information_schema.columns where table_schema= 'ibuyu'

38ba460e-fe07-11ed-90ce-dac502259ad0.png 将上述语句分三次插入,可以看到https://www.elecfans.com/images/chaijie_default.pngss中间的语句都被注释掉,形成了。 38bf4118-fe07-11ed-90ce-dac502259ad0.png

2.模板字符串

ECMAScript 6.0(简称ES6)是Javascript语言的下一代标准,在2015年6月正式发布。ECMAScript是Javascript的语法规定,JavaScript是ECMAScript的实现。ES5标准中一般是输出模板是通过字符串拼接的方式进行的。在ES6中可以通过模板字符串简化字符串的拼接,模板字符串通过反引号来表示````。模板字符串相当于加强版的字符串,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。因此可以使用模板字符串来将分段语句之间的无用代码变为普通字符串,从而拼接https://www.elecfans.com/images/chaijie_default.pngss。


">

38c58a28-fe07-11ed-90ce-dac502259ad0.png

这样就可以利用上述两种方法绕过长度限制去拼接任意的https://www.elecfans.com/images/chaijie_default.pngss语句了。

短域名

如果我们可以申请到一个足够短的域名,那么我们就可以利用域名引入外部的一些东西,比如chaijie_default.png,这样问题似乎就变的简单了起来。但是,这个价格。。。

38ca600c-fe07-11ed-90ce-dac502259ad0.png

这时我们就得利用Unicode等价性漏洞。Unicode标准中提到,两个不同编码的Unicode字符可能存在一定的等价性,这种等价是字符或字符序列之间比较弱的等价类型,这些变体形式可能代表在某些字体或语境中存在视觉上或意义上的相似性。举例来说,a 和a(uff41)在某些字体下看起来可能相同,15和⑮(u246e)其表示的数学意义可能相同,所以这两种字符都有其相应的等价性。其中15是两个字符,而⑮是一个字符,但是再解析之后两者等价,这样我们就用一个字符代替了二个字符。同样的,可以用㎭对应到rad``℡对应到tel更多字符可以参考https://www.compart.com/en/unicode/ 这样我们就可以申请到非常便宜的域名了。

38d500fc-fe07-11ed-90ce-dac502259ad0.png

让我们来实验一些是不是真的可以引入外部的东西,插入.us,可以看到我们引入了外部的图片。同样我们也可以引入js脚本来实现我们想要的东西

38dc9ad8-fe07-11ed-90ce-dac502259ad0.png

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 浏览器
    +关注

    关注

    1

    文章

    974

    浏览量

    34418
  • SRC
    SRC
    +关注

    关注

    0

    文章

    60

    浏览量

    17801

原文标题:XSS绕过小思路

文章出处:【微信号:Tide安全团队,微信公众号:Tide安全团队】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    预防跨站脚本攻击(XSS)的方法

    跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户
    的头像 发表于 09-30 10:05 695次阅读

    单片机超声波避障车,需要多少个超声波能够让小车绕过障碍物。

    本帖最后由 zeng10119 于 2017-3-21 12:01 编辑 有懂避障这方面的吗?绕过障碍物的程序思路怎么写?找了好多自动壁障车资料,都是无脑避障,要么是遇到障碍物左转或右转,要么是遇到障碍物180°转弯。算法思路
    发表于 03-21 10:57

    怎么绕过内部耦合器

    问候,我一直试图通过绕过测试端口的内部耦合器来提高我的N5230C PNA灵敏度。为实现这一目标,我直接访问了内部微波硬件配置,并通过循环器路由信号。请参阅附件。我没有达到更好的灵敏度,但是我的测量
    发表于 10-22 16:14

    软WAF上传绕过+wbehshell免杀

    软WAF上传绕过+wbehshell免杀
    发表于 09-07 10:35 4次下载
    软WAF上传<b class='flag-5'>绕过</b>+wbehshell免杀

    基于动态污点分析的DOM XSS漏洞检测算法

    针对Web客户端中基于文档对象模型的跨站脚本攻击(DOM XSS)漏洞检测问题,提出一种基于动态污点分析的DOM XSS漏洞检测算法。通过构造DOM模型和修改Firefox SpiderMonkey
    发表于 12-18 16:01 0次下载
    基于动态污点分析的DOM <b class='flag-5'>XSS</b>漏洞检测算法

    基于Django的XSS防御研究与实现

    跨站脚本攻击(XSS)是当前最流行的Web应用攻击方式之一,而Django作为目前比较火热的Web应用开发框架,并没有为其开发的Web应用提供有效的XSS防御功能。本文针对此问题,采用中间件,黑白
    发表于 04-09 11:33 0次下载
    基于Django的<b class='flag-5'>XSS</b>防御研究与实现

    什么是XSS跨站漏洞以及它的修复方案

    XSS攻击又分好几个种类,分存储型XSS,反射型XSS,DOM型XSS,为了快速的让大家理解这些专业术语,我这面通俗易懂的跟大家介绍一下,存储型XS
    发表于 09-09 11:34 1359次阅读

    接触器为什么要通过小电流控制大电流

    在众多电气二次设备中,接触器只是通过小电流控制大电流的设备之一,为什么要通过小电流控制大电流呢?
    的头像 发表于 06-02 17:44 1w次阅读

    一文了解安全测试基础之XSS

    在web项目安全漏洞中,XSS是最为流程的漏洞类型之一,今天就来介绍一下XSS
    的头像 发表于 06-28 11:15 2171次阅读

    XSS发生原理及XSS攻击的类型

    xss发生原理 xss就是跨站脚本攻击,造成这种漏洞存在的根本原因是开发者的安全意识不够而留下的漏洞,使得用户可以直接在页面提交代码,并且执行,从而获取到用户权限,cookie等危害,xss攻击一般
    的头像 发表于 08-04 18:00 3556次阅读

    XSS Filters安全XSS过滤器

    ./oschina_soft/xss-filters.zip
    发表于 05-09 09:34 1次下载
    <b class='flag-5'>XSS</b> Filters安全<b class='flag-5'>XSS</b>过滤器

    绕过kernel模块版本校验检测

    绕过kernel模块版本校验检测
    发表于 10-28 11:07 0次下载

    简洁高效的XSS扫描工具

    XSSCon是一个用于扫描和利用XSS漏洞的工具,基于python 3.7编写。
    的头像 发表于 01-17 09:25 1607次阅读

    XSS漏洞扫描器工具

    XSpear是一款基于RubyGems的的XSS漏洞扫描器。拥有常见的XSS漏洞扫描攻击测试功能。还可进行参数分析。
    的头像 发表于 01-17 09:28 1240次阅读

    什么是跨站脚本攻击?一篇带你了解什么叫做XSS

    XSS作为OWASP TOP 10之一。
    的头像 发表于 12-20 09:49 423次阅读
    什么是跨站脚本攻击?一篇带你了解什么叫做<b class='flag-5'>XSS</b>