一个有趣的xss绕过过程

admin 2024年1月13日16:26:13评论25 views字数 658阅读2分11秒阅读模式

最近在对客户的一个网站进行渗透时,发现了一个有趣的xss。如下图所示:

一个有趣的xss绕过过程

当使用<script>标签时发现被移除,如下图所示:

一个有趣的xss绕过过程

尝试使用<scriPt>标签字母大小写绕过,发现还是被移除。如下图所示:

一个有趣的xss绕过过程

进一步使用233">alert(233)payload测试发现alert字符可以正常显示,但是()圆括号被html实体化编码了。如下图所示:

一个有趣的xss绕过过程

于是尝试使用img标签但是在测试时发现img标签的src属性也被过滤,如下图所示:

一个有趣的xss绕过过程

最后尝试使用<svg>标签,利用<svg>标签的onload属性进行加载,如下图所示:

一个有趣的xss绕过过程

但是当添加=时,发现/onload=被替换为空,如下图所示:

一个有趣的xss绕过过程

于是想到对=进行两次url编码但是发现同样还是被过滤,进一步测试发现当对=进行三次url编码时,即可看到页面正常输出,如下图所示:

一个有趣的xss绕过过程

于是构造如下的payload:233"><svg/onload%25%32%35%25%33%33%25%36%34alert(233)>,查看页面响应,发现()已经被服务器进行html实体编码,但由于该实体编码位于<svg>标签中,故可直接进行测试(因为<svg>标签中可直接执行实体字符),当然此处也可使用:
233"><svg/onload%25%32%35%25%33%33%25%36%34alert`233`>,这个payload进行测试。如下图所示:

一个有趣的xss绕过过程

可看到成功得到一枚xss,如下图所示:

一个有趣的xss绕过过程

来源:https://xz.aliyun.com/ 感谢【max

原文始发于微信公众号(船山信安):一个有趣的xss绕过过程

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月13日16:26:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一个有趣的xss绕过过程http://cn-sec.com/archives/2388029.html

发表评论

匿名网友 填写信息