• 【BugBounty】记一次Xss绕过


    前言

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

    初步测试

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

    图片

    绕过html实体编码

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

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

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

    图片

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

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

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

    图片

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

    WAF层面

    原本想着直接秒杀 结果来了个waf

    图片

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

    图片

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

    图片

    然后使用a标签进行绕过

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

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

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

    图片

    图片

    图片

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

    图片

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

    图片

    图片

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

    图片

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

    图片

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

    aurebesh.js

    图片

    本地测试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";//

    最终效果

    图片

    图片

  • 相关阅读:
    Jenkins 构建时动态获取参数
    Python 中的 Elias Delta 编码
    因果推断 | 双重差分法笔记补充
    Rabbit消息的可靠性
    【精选】代码Ai生成,
    ds配置datax数据同步工具
    JAVA通过COM方式(jeasyopc)接入OPC DA
    详解 React 18 更新后的特性,一文即懂
    HTML+CSS+JS网页设计期末课程大作业—— 艺术官网17页(包含登陆注册)
    [英雄星球七月集训LeetCode解题日报] 第20日 BST
  • 原文地址:https://blog.csdn.net/YJ_12340/article/details/133815336