V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Margarethe
V2EX  ›  程序员

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

  •  
  •   Margarethe · 2024-04-11 15:54:27 +08:00 · 6152 次点击
    这是一个创建于 366 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    重点是!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

    我:黑人问号.jpg
    Richared
        30
    Richared  
       2024-04-11 22:02:20 +08:00
    没人在前端做鉴权吧。。。。
    flyqie
        31
    flyqie  
       2024-04-11 23:38:54 +08:00
    @default #28

    ?这跟语言有啥关系?

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

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

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


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

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