【BugBounty】记一次Xss绕过

admin 2023年10月12日22:53:03评论18 views字数 1288阅读4分17秒阅读模式

前言

最近一直在看国外的赏金平台,绕waf是真的难受, 记录一下绕过的场景。

初步测试

一开始尝试XSS,发现用户的输入在title中展示,那么一般来说就是看能否闭合,我们从下面图中可以看到,输入尖括号后被转成了实体。

【BugBounty】记一次Xss绕过

绕过html实体编码

解释一下什么是html实体编码

HTML实体编码,也即HTML中的转义字符。

在 HTML 中,某些字符是预留的,例如在 HTML 中不能使用小于号<和大于号>,这是因为浏览器会误认为它们是标签。如果希望正确地显示预留字符,我们必须在HTML源代码中使用字符实体(character entities)。HTML 中的常用字符实体是不间断空格。(注意:实体名称对大小写敏感!) 字符实体类似这样:&entity_name; 或者 &#entity_number;如需显示小于号,我们必须这样写:< 或 < 常见的实体编码:

【BugBounty】记一次Xss绕过

关于更多的实体可在下面网站查看寻找:

基本拉丁字母, 128 符号 (◕‿◕) SYMBL

继续尝试是发现我们讲html10进制实体编号输入转义会闭合title标签

【BugBounty】记一次Xss绕过

原本以为事情逐渐简单了起来,结果更大的一个坑在等着我。

WAF层面

原本想着<img/src=1 onerror=alert(1) />直接秒杀 结果来了个waf

【BugBounty】记一次Xss绕过

下一步按照往常一样 fuzz事件,结果全是403,这时候那没办法了那就不能用img标签了

【BugBounty】记一次Xss绕过

改换其他标签,fuzz以下 发现可用的还不少。

【BugBounty】记一次Xss绕过

然后使用a标签进行绕过

常用的payload,基于下面payload改就行了

<a href="javascript:alert(1)"/> 

原本是一番风顺的 到后面发先还有过滤,真吐了,看图就好

【BugBounty】记一次Xss绕过
【BugBounty】记一次Xss绕过
【BugBounty】记一次Xss绕过

绕过javascript,到这里了可能一部分人觉得已经结束了,但实际上没那么简单

【BugBounty】记一次Xss绕过

前面其实花的时间并不多主要绕alert的时候。此处我尝试的多种方式包括html实体绕过,基本都不行,

【BugBounty】记一次Xss绕过
【BugBounty】记一次Xss绕过

然后就在此处卡了很久,我也想过不使用alert使用prompt这些函数但就是不行,后面发现后面就是不能跟括号和反引号

【BugBounty】记一次Xss绕过

这时候就在想,还有不能用括号进行弹窗的函数?给我整懵逼了,找了一大圈一个都没找到都需要用括号,alert后不需要括号和反引号的也过不了。

【BugBounty】记一次Xss绕过

最后在推特上看到了这个最终完成绕过

aurebesh.js

【BugBounty】记一次Xss绕过

本地测试payload

<a/href="javascript;{var{3:s,2:h,5:a,0:v,4:n,1:e}='earltv'}[self][0][v+a+e+s](e+s+v+h+n)(/infected/.source)" />click
<a href=ja&NewLine;vascript:k='',a=!k+k,f=!a+k,g=k+{},kk=a[k++],ka=a[kf=k],kg=++kf+k,ak=g[kf+kg],a[ak+=g[k]+(a.f+g)[k]+f[kg]+kk+ka+a[kf]+ak+kk+g[k]+ka][ak](f[k]+f[kf]+a[kg]+ka+kk+"(k)")()> 1111";//</title>

最终效果

【BugBounty】记一次Xss绕过
【BugBounty】记一次Xss绕过

原文始发于微信公众号(合天网安实验室):【BugBounty】记一次Xss绕过

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月12日22:53:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【BugBounty】记一次Xss绕过http://cn-sec.com/archives/2106906.html

发表评论

匿名网友 填写信息