文章总结: 本文探讨了微信小程序云函数迁移中的越权风险。作者利用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《原创 | 小程序中云函数越权的探索》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。


![[吃瓜速递]第一个“受害人”出现了OpenClaw自动发红包](/images/random/titlepic/3.jpg)





![[更新]红队加载器Loader](/images/random/titlepic/6.jpg)

评论