V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Margarethe
V2EX  ›  程序员

给大伙分享个微信小程序的新功能(超级后门,提权神器)🤣

  •  
  •   Margarethe · 19 天前 · 4893 次点击

    今天听群友抱怨小程序的 bug 才知道的,去社区搜了下,发现有人早发现这个问题了,原文可以点这里: https://developers.weixin.qq.com/community/develop/article/doc/000ae2dd1e0bd0d8efe05a66c66813 总结一下就是,如果你手机自带截图,截取了你当前小程序的图,发给别人,别人点开截图后,下方有个直接进入小程序的按钮

    重点是!

    根据群友的信息,这个进入会携带你的用户信息直接进入!直接用你的账号登录了!

    44 条回复    2024-04-12 21:20:39 +08:00
    DreamingCTW
        1
    DreamingCTW  
       19 天前
    "所以这一波损失是真真切切存在的,今天我也主动对这个问题进行了修复,就是在进入激活码生成页 的时候也做了权限的校验,这样保证没有权限的用户即使扫码进入也没法生成正确的激活码"

    你确定进去是截图者的权限?那是他自己没有做鉴权。相当于进这个页面之前他判断用户有没有权限,有权限就可以进,但是进到这个页面就不会再进行鉴权了。他截图的页面是无需鉴权的,这个是自己代码逻辑的问题。
    InDom
        2
    InDom  
       19 天前
    没看懂:

    一、如果你手机自带截图,截取了你当前小程序的图,发给别人,别人点开截图后,下方有个直接进入小程序的按钮

    iPhone 14 未能复现,打开任意小程序,点开任意页面,截图,然后发送给文件传输助手,在查看图片,未找到“直接进入小程序的按钮”

    二、这个进入会携带你的用户信息直接进入

    根据我从文中的理解,两种可能:截图有隐含的小程序码,否则通过图片识别是哪个小程序的页面截图难度太大了...

    就算实现了前者,截图“隐含水印”中带有用户信息的可能性不大。

    如果是隐含小程序码水印特征,那么可以实现,从文中的情况,也没有携带用户信息,只是能直接打开某个页面,开发者自己没有在这个页面鉴权导致的,根本和微信无关,也没有说到携带用户信息的情况。

    另外,对这个东西的复现很感兴趣,真的能通过不带小程序码的图片识别是哪个小程序的哪个页面?

    最后:不要总想搞大新闻
    DreamingCTW
        3
    DreamingCTW  
       19 天前
    @InDom #2 嗯,我用的 Android ,微信有这个功能,在小程序页面截图,讲截图发送给好友,好友打开图片,下方有直接进入小程序的按钮。ios 不清楚
    abelmakihara
        4
    abelmakihara  
       19 天前
    不知道这个页面设置是否可以分享
    如果不能分享那这确实算一个漏洞啊 相当于变相分享了
    当然 没鉴权是他自己的问题
    MonkeyD1
        5
    MonkeyD1  
       19 天前
    为什么我不管在呢截的图 图片上有入口 只能进入首页呢
    abelmakihara
        6
    abelmakihara  
       19 天前
    如果本来就能分享 没这个他也能触发鉴权漏洞啊
    帖子里看起来似乎是可以分享的
    967182
        7
    967182  
       19 天前
    我给别人分享的小程序,打开以后看到的是我的账号下内容。。。。。
    justfindu
        8
    justfindu  
       19 天前
    没法复现么
    StinkyTofus
        9
    StinkyTofus  
       19 天前
    这纯粹是作者自己的问题, 不管是什么权限校验都不应该在 ui 层去判断啊, 而且还只在一个界面判断了, 跳过这个界面就绕过了, 这漏洞也太大了。

    这次他修改了,也是治标不治本, 看的出来他只是在生成激活吗的页面又加了判断, 逻辑还是在 UI 层, 都不和服务器交互生成激活码, 这也太容易破解了吧。
    ing995683
        10
    ing995683  
       19 天前
    怎么复现,我是安卓。没法复现
    zzxqd
        11
    zzxqd  
       19 天前
    @StinkyTofus 如果是原帖说的,没有在特殊的页面上做权限验证,而且只在前端验证那确实有问题。

    不过进入会携带你的用户信息直接进入是什么意思?是截图人的账号信息么?应该不可能吧,是不是页面链接地址上携带的有当前登录人的信息,导致分享出去的页面地址直接进去就是分享人的账号信息。
    pianjiao
        12
    pianjiao  
       19 天前 via Android
    这不是新加的功能么,微信能识别小程序截图
    zzxqd
        13
    zzxqd  
       19 天前
    感觉应该是分享时的地址链接里自带有当前人的身份信息,导致后续不管是谁通过截图的链接人直接就是分享人的信息。

    还以为真有啥大新闻,还是开发者自身的问题。
    Yesr00
        14
    Yesr00  
       19 天前
    确定是小程序的问题不是开发者自己留的 BUG ??
    fionasit007
        15
    fionasit007  
       19 天前
    可能是进到小程序的一个子页面然后截图发给别人,别人点击图片进到当时那个子页面,好像小程序分享页面好像会记录这个页面的操作,比如说筛选啥的,分享出去别人看的还是这个筛选结果,可能就是这里把一些不需要登录验证的数据给泄露了,不知道我想的对不对
    ysc3839
        16
    ysc3839  
       19 天前 via Android
    这感觉类似小程序菜单里的复制页面链接?
    scarecrowlxb
        17
    scarecrowlxb  
       19 天前 via Android
    @zzxqd 没看贴,看评论区的描述我可能的原因:
    分享时生成的链接作者加了个用户 id 之类的参数,其他人打开链接时作者直接用链接中的用户 id 参数来判断登录用户。
    me1onsoda
        18
    me1onsoda  
       19 天前
    根据群友的信息,这个进入会携带你的用户信息直接进入!直接用你的账号登录了!

    你确认吗?看他描述并不是 token 泄露了
    QAZXCDSWE
        20
    QAZXCDSWE  
       19 天前
    糟糕会错地方了,尴尬
    fionasit007
        21
    fionasit007  
       19 天前
    再补充一下这个实际算是那个帖子的楼主自己的错误,这个邀请码是只要进来就可以刷新,根本没有判断权限,但是需要从去正常验证过权限的页面进去,不过小程序分享就是分享当前页,所以造成了这个问题,相等于我分享我登录后的个人信息页地址给你,你可以进去但是不会重定向登录页,这个“携带你的用户信息直接进入”并不是这样的,你有点误解了
    twofox
        22
    twofox  
       19 天前
    他自己的问题吧?我用了 IT 之家的小程序测试了一下 ,是没有办法绕过鉴权的
    gitreny
        23
    gitreny  
       19 天前
    这不是他自己的问题吗 只能说他的小程序有问题
    maemolee
        24
    maemolee  
       19 天前   ❤️ 1
    什么啊,就是某个小程序安全做的不行呗😮‍💨
    latifrons
        25
    latifrons  
       19 天前
    什么啊,就是绕过了首页鉴权直接空降到了邀请码发放页面,小程序的分享功能可以直接分享邀请码页面的 URL ,自己的问题,怪不了别人
    flyqie
        26
    flyqie  
       19 天前
    不要想搞个大新闻。。。你管这叫"超级后门,提权神器"也太标题党了

    原文里面都说了`因为我当时做这个功能的时候是通过入口控制的,如果存在权限,会展示这个入口,但是从入口进入之后就不做权限控制了`


    很明显跟微信没半毛钱关系,谁们家线上用 path query 等玩意做鉴权。
    tanranran
        27
    tanranran  
       19 天前
    你这明显是没有做鉴权导致的,假如从右上角复制链接,也会有这种问题
    default
        28
    default  
       19 天前
    后台肯定不是 JAVA 写的,一个鉴权拦截器就搞定,出来怪微信。。
    leaflxh
        29
    leaflxh  
       19 天前
    "因为我当时做这个功能的时候是通过入口控制的,如果存在权限,会展示这个入口,但是从入口进入之后就不做权限控制了,

    正常情况下,这种逻辑不存在啥问题"

    我:黑人问号.jpg
    Richared
        30
    Richared  
       19 天前
    没人在前端做鉴权吧。。。。
    flyqie
        31
    flyqie  
       18 天前
    @default #28

    ?这跟语言有啥关系?

    任何一个语言都能做到你说的`鉴权拦截器`。
    mht
        32
    mht  
       18 天前
    激活码应该接口生成并且校验,前端是不可信的。
    StinkyTofus
        33
    StinkyTofus  
       18 天前
    @zzxqd #11 不想多说, 你看看其他层的评论吧, 应该能看懂
    zzxqd
        34
    zzxqd  
       18 天前
    @StinkyTofus 中间换行了,上半部分是表示同意你的看法,所以是对你的回复。下边是对发帖者重点部分的反问,不是我没看懂发帖者的意思。
    hihanley
        35
    hihanley  
       18 天前
    标题党
    keller
        36
    keller  
       18 天前
    应该是把用户 id 之类的参数放在了 url ,然后相关的页面和接口也没有做鉴权直接拿 url 里面的 id 发起了业务
    keller
        37
    keller  
       18 天前
    典型的设计缺陷
    dongtingyue
        38
    dongtingyue  
       18 天前
    为啥我的微信不能识别小程序截图?
    korvin
        39
    korvin  
       18 天前   ❤️ 1
    三方小程序开发人员的锅,微信不背😂。路径上带类似用户编号的信息,服务端也不做鉴权,就给返回数据
    Dongxiaohao
        40
    Dongxiaohao  
       18 天前
    所以后端在生成激活码的时候难道不鉴权吗,感觉挺奇怪的问题。。。
    milukun
        41
    milukun  
       18 天前
    我的理解是,他有个页面可以生成用于销售的“兑换码生成页面”
    然后这个页面他是用什么方式隐藏起来的,只有自己账号能看到入口能进去“兑换码生成页面”

    但是呢,微信出了一个新功能,根据截图识别进入小程序
    导致“兑换码生成页面”多了一种进入方式,进而导致的损失

    问题在于作者偷懒没给“兑换码生成页面“做鉴权


    另外,自己做一个“兑换码生成页面”很正常。我自己的网站也有快速给用户充值的页面,但是肯定必须是我的账号才能进啊,而不是得到 url 的都能进,然后自己搞个很复杂的 url 路由企图避免其他人猜到地址(这样很蠢啊)
    encro
        42
    encro  
       18 天前
    但凡有点后端开发常识,
    也知道这是不可能的。。。
    是小程序开发者的坑不是微信平台的坑。

    因为 page path 里面带了相关信息,小程序前后台没有做验证呗。
    kenilalexandra
        43
    kenilalexandra  
       18 天前
    鉴定了是标题党,你给自己的小程序只做了登陆验证,然后登陆后的功能都不需要鉴权这不摆明了是你自己的问题?
    caiqichang
        44
    caiqichang  
       18 天前
    随便测个小程序 中国移动的 不会带入用户信息,op 自己没做好罢了。比如用户信息的 token 放在 url 而不是请求头
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2419 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:20 · PVG 23:20 · LAX 08:20 · JFK 11:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.