一次xss-bypass

admin 2024年8月6日20:48:36评论18 views字数 1260阅读4分12秒阅读模式

0x00前言

做项目时,遇到了一个形式上,但是存在自定义的waf拦截,本篇简单的讲下我的绕过思路。

0x01XSS发现

这个xss的发现很简单,就直接加上">就能直接看出来是存在XSS的了一次xss-bypass

0x02 绕过思路

后续的正常思路就直接输入"><img src=1 onerror=alert(1)>,然后G掉一次xss-bypass

所以能够意识到是存在waf拦截的,我们上面输入的XSS语句太明显了,被检测出来了,所以需要考虑怎么绕过。
在XSS的绕过中,我一般是倾向先慢慢删,把payload删到不拦截为止,所以我直接删完了
通过尝试发现<img就直接被拦截,所以尝试更换使用<image>可以,然后就正常的向后构造,直到构造到这里<image src=| onerror=alert(1)//>又G了一次xss-bypass

通过把alert删除后发现能够正常访问一次xss-bypass

所以我们需要考虑怎么把alert绕过去

0x03 函数替换

首先第一思路肯定是用confirm或者prompt替换,然后发现全都过滤了一次xss-bypass

0x04 编码绕过

一般编码绕过我都只尝试Unicode编码,将prompt编码为pru006fmpt,结果还是被拦住了一次xss-bypass

0x05 混淆绕过

在一般的waf拦截中,大多都是采用的正则的方式进行匹配,一般不会是只要某个字符出现就拦截,所以我们在绕过waf的时候可以考虑混淆

比如这个代码

this[`al`+/ert/.source](1)

制作一个alert函数来进行弹窗,这种构造在面对正则的匹配时一般是能绕过去的,所以当我输入这个payload时很明显的发现自动的给我们的payload改动了一些,导致弹窗失败一次xss-bypass

后续尝试这种构造也是存在上面的这个问题,我们输入的payload会被改动,在最后会有个=

window['a'+'l'+'e'+'r'+'t'](123)

所以这条路就只能宣告暂时无法走通了

0x06 反思

目前大致尝试了多种方法,均无法利用,所以后续能够考虑的比较有效的思路就只有两种了

  1. 模糊测试,FUZZ看看有没有什么特殊字符能够拼接然后绕过
  2. 对上面的混淆绕过重新考虑利用方式

由于我使用的是热点,在简单的FUZZ后,发现效率很慢,所以转变思路在混淆绕过上面了。
跟具我多次的尝试,发现当我们输入的paylaod中带有如下等符号时,会自动的在最后给我们加上一个=或者是直接删除掉我们的特殊符合等,导致我们的payload失效

' " ` /

所以后续的考虑点就变成了,不用任何特殊符合的混淆,且网站对编码进行了严格的检测,所以还不能使用编码来混淆。
所以使用top对象,转30进制,构造paylaod为:

top[8680439..toString(30)](document.cookie)

最后成功弹窗一次xss-bypass

0x07 最后

这个waf属于自研的,比较简单,在日常遇到的waf中,通用的思路还是在上面的方法走不通后,还是倾向于去FUZZ特殊字符比如这种:一次xss-bypass

文章转载:https://www.freebuf.com/articles/web/359617.html

文章作者:fthgb

原文始发于微信公众号(赤弋安全团队):一次xss-bypass

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月6日20:48:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次xss-bypasshttps://cn-sec.com/archives/2002012.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息