大麦微信小程序出现越权漏洞?多人被陌生人随意退票 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Hozoy
V2EX    信息安全

大麦微信小程序出现越权漏洞?多人被陌生人随意退票

  •  
  •   Hozoy 201 天前 4431 次点击
    这是一个创建于 201 天前的主题,其中的信息可能已经有所发展或是发生改变。

    近期小红书有多人发帖称自己的票被莫名奇妙退掉,然后后面有网友发现,大麦的微信小程序订单页面截图发给其他人,其他人可以通过微信入口识别并进入到截图对应的订单页面,并且可以操作退款等越权行为。

    https://i.imgur.com/PnY1uWj.jpeg https://i.imgur.com/SV9AuCZ.jpeg https://i.imgur.com/Kuh7qRi.jpeg

    截止到目前,多位网友称此越权漏洞已经被修复。

    盲猜一手,微信小程序在截图的时候会加上可识别的盲水印,并且指向当前小程序的链接,并且这个链接大麦在做的时候可能带有用户授权信息,在其他人识别进入这个链接后,直接获得订单号主权限,然后达到越权的实现。

    随便一搜,微信的这个功能很多人都反馈,如果没有特殊处理会有越权问题: https://developers.weixin.qq.com/community/develop/doc/00082e6e1908405c24b2ea5ff61000?highLine=%25E6%2588%25AA%25E5%259B%25BE%25E8%25AF%2586%25E5%2588%25AB

    并且这个功能还不能关闭,有做小程序的需要注意了。

    19 条回复    2025-04-01 09:58:08 +08:00
    codehz
        1
    codehz  
       201 天前
    合着这玩意校验权限全靠前端啊
    renmu
        2
    renmu  
       201 天前 via Android
    代码的问题,很早之前论坛就有过讨论了
    Hozoy
        3
    Hozoy  
    OP
       201 天前
    @codehz #1 例如,前端直接把 token 拼到链接上了,以为小程序不是网页没人能看到链接
    Hozoy
        4
    Hozoy  
    OP
       201 天前
    @renmu #2 /t/1031676 找了一个一年前的帖子,的确论坛有讨论,不知道大麦这个 bug 出现了多久,这两天讨论的人多了才修复
    hafuhafu
        5
    hafuhafu  
       201 天前
    后端没校验啊...
    bruce0
        6
    bruce0  
       201 天前
    世界就是个大草台班子 再次 +1, 这种最基本的判断 后端都不校验, 有点离谱了
    justfun
        7
    justfun  
       200 天前
    即使微信没这个功能 ,后端不鉴权的话 那我抓包也能越权啊
    Hozoy
        8
    Hozoy  
    OP
       200 天前
    @justfun #7 不是不鉴权,应该只是把 token 啥的带到链接上了
    Chemist
        9
    Chemist  
       200 天前
    NB ,这个 bug 是想写都不一定写得出来的。这就是所谓的,坏人绞尽脑汁不如蠢人灵机一动吗。
    BigTomato
        10
    BigTomato  
       200 天前
    @kyuuseiryuu 大概率没在后端鉴权,不是 Bug
    Chemist
        11
    Chemist  
       200 天前
    @BigTomato URL 带的 Token 是对的后端也没办法鉴权啊。后端只能知道 Token 是不是对的,又不能知道 Token 是哪里来的。这明显就是小程序端写的 bug 。
    BigTomato
        12
    BigTomato  
       200 天前
    @kyuuseiryuu 小程序可以通过相关 API 获取用户唯一标识,即使有 Token 不得比对一下当前用户是否和 Token 对应用户相同吗?
    Hozoy
        13
    Hozoy  
    OP
       200 天前
    @BigTomato #12 应该是这个场景小程序开发没考虑到,获取 token 一般是主入口等地方获取,这种子页面可能做的时候偷懒传了一些用户相关的值,包含后端鉴权的值,然后也没有重新获取 token ,就成现在这样了
    coolcoffee
        14
    coolcoffee  
       200 天前
    我感觉是没校验归属用户,比如通过截图知道了这个订单的 uuid ,结果我用我的账号 token 去取消其他人的订单 uuid ,也是可以成功的。
    Chemist
        15
    Chemist  
       200 天前
    @BigTomato #12 如果用 JWT ,{ uid: 'xxxxx' } 这样的结构去生成一个 token ,验证通过直接就拿这个 payload 里面的 uid 来当作当前请求的用户了。如果要验证这个 token 和请求的用户是不是同一个,那么请求头上面还得加个字段来传当前用户 uid ,如果小程序前端知道在请求头上加东西,也就不会把 token 加在 URL 上面了。
    YJi
        16
    YJi  
       200 天前
    绝了,刚在群里跟群友分享,群友说她朋友的巴奴积分也因为类似 bug 被别人给抽奖抽完了。笑死。
    yafoo
        17
    yafoo  
       200 天前 via Android
    @kyuuseiryuu 小程序不能修改请求头的,所以我们 token 也是放 url 上
    Chemist
        18
    Chemist  
       200 天前 via iPhone
    @yafoo 可以改啊,我改过。
    nilaoda
        19
    nilaoda  
       200 天前
    不是隐水印吧,同样的图你从相册里分享或者复制一张图,就不会有跳转小程序的提示。应该是监听了截图事件,然后内部存储 url 和图片的名称之类的。
    关于     帮助文档     自助推广系统     博客     API     FAQ &bsp;   Solana     2801 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 07:08 PVG 15:08 LAX 00:08 JFK 03:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86