原创|小程序中云函数越权的探索

admin 2026-03-11 02:33:23 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文探讨了微信小程序云函数迁移中的越权风险。作者利用AI搭建Demo发现,若云函数合并增删改查功能且未作权限校验,攻击者可在控制台直接调用敏感接口篡改数据。文章建议按权限拆分云函数并配置最小权限策略,提醒安全人员重点排查功能拆分合理性及权限配置,防范逻辑漏洞。 综合评分: 85 文章分类: 渗透测试,漏洞分析,WEB安全,云安全


云函数说明

因为是搭建的微信小程序,AI 编程工具CodeBuddy CN和腾讯云适配的很好,而且第一次用还给六个月免费。所以下面说的是腾讯云。

编译后测试

编译后用微信打开,按照开启微信小程序调试的办法打开

  • • https://github.com/evi0s/WMPFDebugger
  • • https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python

注意 我在测试的时候遇到了一个问题,就是微信魔改的浏览器,它在 appcontext 层级下,没办法显示响应包,也无法 console.log 打印。

微信 4.x 的解决办法是开启微信小程序的 vconsole 调试,因为我的小程序是开发版本,所以有这个按钮,但生产环境的没有,这就导致测生产会出现打印不了的情况。我看网上有用 jsrpc 调用 WebSocket,远程打印的。但我试了,没成功。

微信 3.x 的话,只要 WeChatOpenDevTools 开启调试即可。但需要绕过微信版本过低的问题,这个已有解决方法,可参考:https://bbs.kanxue.com/thread-289214.htm 或者 CE 改一个贼大的版本

开启调试后,全局搜索:wx.cloud.init

这里有对应的 cloudbase 的环境 env 值,这个值的话,需要和小程序的 wxid 对应才能使用。具体的校验机制没了解,不过也不影响。

原 JS 代码 漏洞分析

好了,看完上面的内容,请问改这个云函数调用过程有什么问题?存在什么漏洞?

答案是越权。毕竟文章标题就叫这个。

AI 想得比我全面,我只想要一个查看的功能,它很贴心的给我生成了articleManager,翻译过来是文章管理。

顾名思义,文章管理中不可能只存在查看,其他三个——增删改也跑不掉。一些开发在写代码的时候,也会多写几个对应的功能,便于未来扩展,但鉴权没做,图增攻击面。

AI 把增删改查写在了一个云函数当中,但并未对云函数本身进行权限限制,就导致了上述问题。

源码: 修复建议

云函数按照权限进行功能拆分,指定可以操作的角色。 未授权的用户只能使用查看的函数,授权的用户才能增删改。

在这里对云函数进行权限控制

也就是说,虽然我们这里只有 articleManager,但是其他的云函数也是可以在其中调用的,只要 wxid 和云函数中的队友

比如 getTags

wx.cloud.callFunction({
  name: 'getTags',
  data: { event: '', data: { page: 1, pageSize: 10 } }
}).then(res => console.log(res.result)).catch(err => console.error(err));

总结

如果小程序使用了云函数,我们可以尝试在控制台中,检测云函数是否存在越权。新鲜事物,理解不当,就容易出现问题,安全人员对此态度应谨慎。

下面这篇文章,云函数也是出了类似的情况:

  • • 云函数开发的小程序的隐藏参数挖掘 https://mp.weixin.qq.com/s/vlzvLHg8b7-6oOssPa60Gw

对云函数写安全 checklist 和基线的时候,可以着重排查云函数中的功能拆分是否合理。以及给云函数配置的权限是否满足最小权限原则。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:进击的HACK 进击的HACK 进击的HACK《原创 | 小程序中云函数越权的探索》

评论:0   参与:  0