zoukankan      html  css  js  c++  java
  • 大众点评selfxss结合两个csrf变废为宝(已修复,故公开,不涉及真实参数)

    大众点评selfxss结合两个csrf变废为宝

    漏洞不值钱,但还是蛮好玩的

    漏洞信息

    类型:存储型xss
    场景:收藏商户后,去已收藏的商户列表可以给指定商户添加tag(与下文html标签区别)
    漏洞限制:
    1.selfxss,即需要用户自己登录账号,然后自己输入payload。。。绕过思路当然是csrf了
    2.有waf拦截,绕过思路就是各种换标签换属性换事件尝试咯
    3.单个tag字数不能10个字符,多个tag空格隔开,一次最多5个tag

    突破selfxss

    这里没什么好说的,找到添tag的接口:

    http://www.dianping.com/addtag.do?tags={xsspayload}&shopid=12345  
    

    但是这里有个小问题,如果用户并没有收藏12345这个商户,添加tag是无意义的,因此需要再找一个添加指定商户的csrf,碰巧也是存在的:

    http://www.dianping.com/addsh.do?shopid=12345  
    

    绕过waf

    发现xss是因为我输入了一个<input>标签被解析,但是只要标签有其他属性就会被拦截,类似下面这样的都不可以
    <标签名称 属性名称="属性值" on事件="执行函数">
    但是只要不输入尖括号,就不被拦截
    能不能不适用尖括号呢?
    还真可以———标签输入栏本身就是一个 <input>标签!

    <input name="tag" value="tag1 tag2 tag3 tag4 tag5">
    

    因此可以在标签内闭合即可,我输入"onclick="alert(),就变成

    <input name="tag" value=""onclick="alert()">
    

    绕过tag长度限制

    其实上一步的palyload是无法保存的,因为单个tag最多只能10个字符,因此需要把payload拆分成至多5份,每份字符不大于10个,中间用空格(%20)隔开,如果想弹出cookie,原始payload如下:

    "onclick="alert(document.cookie)
    

    下面是拆分思路:

    "onclick= "alert(document.cookie)
    
    "onclick= "alert (document.cookie)
    

    到这步,document.cookie怎么拆,坑爹啊!这样拆↓

    document ['cookie']
    

    最终payload如下:

    "onclick= "a= document ['cookie'] ;alert(a)
    

    其实到这一步,仍然不能做太多的事情,顶多就是在用户收藏里面插入一些短标签或者执行一些简单函数,但是至少已经不是一个selfxss了!

  • 相关阅读:
    我的DBDA类文件
    登录时的验证码怎么写?
    phpcms 制作简单企业站的常用标签
    HTML 基础知识
    目标
    split函数的实现
    myString操作符重载
    cout中的执行顺序_a++和++a
    二叉树的层次遍历法
    树的前中序遍历_求后续遍历
  • 原文地址:https://www.cnblogs.com/mkdd/p/10130295.html
Copyright © 2011-2022 走看看