不知道小程序怎么挖掘?四个实战小程序登录口漏洞案例和AI审计

发布时间:2026/10/19 3:38:22

不知道小程序怎么挖掘?四个实战小程序登录口漏洞案例和AI审计 前言本文包含四个EDUSRC小程序实战案例涉及小程序appsecret泄露、AES加密三要素泄露、调试接口获取任意token、弱口令和逻辑漏洞。文中还分享了一个小程序漏洞挖掘小技巧。仅用于网络安全教学严谨利用文章内容进行恶意破坏请遵守法律法规案例A-小程序appsecret泄露打开小程序前用BP提前拦截数据包然后再打开小程序发现一个请求包的响应中完整泄露了appid和appsecret。获取appid和appsecret后在提交EDUSRC之前需验证其有效性做无害化验证。可调用微信官方提供的接口用appid和appsecret获取token。https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credentialappidwx46******9csecret9931******8638上图可以看到成功获取了access_token接着再验证该access_token是否有效。https://api.weixin.qq.com/cgi-bin/account/getaccountbasicinfo?access_token******最终发现返回的小程序名称与该小程序名称一致也证明该小程序的备案主体为某某学院。如果不想使用官方api测试也可以使用下面工具梭哈。https://github.com/mrknow001/API-Explorer可以利用多种key、access_token泄露的场景案例B-小程序sessionkey泄露导致任意登陆漏洞打开小程序前用BP提前拦截数据包再打开小程序发现一个请求包的响应中泄露了session_key。注意因为微信小程序的机制code申请后使用一次就销毁所以只能通过这种方式查看或者在HTTP历史请求里找重放是无法正常调用接口的拿到session_key后自然会联想到encryptedData、session_key、iv三要素泄露导致的任意用户注册及登录。恰好这个小程序有手机号一键登录用BP拦截到下面的请求包获得了encryptedData和iv。点击快捷手机号登录账号。用工具成功解密解密后是可以看到当前登录的明文手机号的。{phoneNumber:181*******,purePhoneNumber:181********,countryCode:86,watermark:{timestamp:******,appid:wx******}}在工具里面把解密后的手机号更改为131xxxxxxx8受害者手机号如下。{phoneNumber:131xxxxxxx8,purePhoneNumber:131xxxxxxx8,countryCode:86,watermark:{timestamp:******,appid:wx******}}随后把刚才拦截的包丢弃重新点击登录抓包。会发现iv已经发生了改变把这个iv填入工具进行加密。最后把加密内容替换请求包中encryptedData的值发送包。注意整个过程越快越好不然容易失败页面没反应就是失败了再次尝试即可下图可以看到登录成功成功获取了一个JWT令牌说明存在因小程序三要素泄露导致的任意用户注册及登录。也就是说这个漏洞只要填写任意受害者的手机号都能完成任意登陆。登录后的页面显示用户名为131****xxxx8。之所以说小程序sessionkey三要素泄露导致任意用户注册及登录是因为这种一键授权登录的机制基本上都是手机号不存在就相当于注册如果存在就相当于登录。接下来就可以去找一个系统里已有的、带角色的手机号比如学生、老师、管理员。但很不走运找了半天也没找到一个有角色的。案例C-AI审计调试API接口泄露token依旧是打开小程序前抓包但是这次没发现什么。于是就对小程序进行反编译后把源码扔给AI后审计提示词如下。请你按照“微信小程序官方文档约束型代码审计模式”工作。你需要审计我提供的微信小程序反编译文件。审计原则1. 只基于三类依据下结论- 微信小程序官方文档机制- 反编译代码中的明确证据- 授权安全测试中的可验证行为2. 不允许只凭经验直接判定漏洞。如果只是经验判断请标注为“可疑点/推断”不要直接写成漏洞。3. 不允许把小程序当成普通 Web 前端审计。必须考虑小程序运行环境、微信 API、合法域名、登录态、开放能力、云开发权限等官方机制。4. 审计每个风险点时必须包含- 风险名称- 风险等级- 代码位置- 关键代码片段- 相关微信小程序官方机制- 风险原因- 可利用影响- 合法验证思路- 修复建议- 是否属于“官方依据明确”还是“安全推断”5. 重点检查- 是否硬编码 appid、appsecret、token、密钥- 是否前端直接调用 code2Session- 是否泄露 session_key、openid、unionid- 是否把登录态、敏感信息存入 storage- 是否只依赖前端角色、前端权限判断- 是否存在未鉴权接口- 是否存在越权访问风险- 是否存在任意文件上传、下载、预览风险- 是否存在 web-view 跳转风险- 是否存在云数据库、云函数、云存储权限配置风险- 是否存在测试环境、内网地址、调试接口泄露- 是否存在接口路径、baseURL、请求头、Authorization 泄露6. 审计步骤第一步识别项目结构。第二步识别统一请求封装函数例如 api/request。第三步提取所有 baseURL、host、接口路径。第四步分析 wx.request / uploadFile / downloadFile / connectSocket。第五步分析是否有请求解密逻辑和响应加密逻辑第六步分析登录流程 wx.login、token、用户身份绑定。第七步分析页面权限、角色判断、接口鉴权逻辑。第八步输出风险清单和证据。7. 如果发现发送http请求的接口必须继续追踪- 是哪个函数调用的- 是否经过统一 request 封装- 最终是否调用 wx.request- 请求方法是什么- 是否携带 token- 是否拼接 baseURL- 是否有错误处理和未登录处理8. 禁止将 持久化到本地 storage 认为是安全风险并且不会在安全建议中提到。请严格按照以上模式审计不要给泛泛的安全建议。进行AI审计小程序反编译代码后最终AI发现了一个debug_login函数代码片段太长就不放了。这个debug_login函数的逻辑就是请求一个接口可以直接通过手机号获取token。debug的意思就是调试推测是开发人员留下的调试接口用来快速获取token但小程序上线前开发人员忘记删除调试代码就把小程序上线了。可以看到直接通过手机号就可以获取token相当于任意登陆拿到任何人手机号通过这个接口可以直接获取凭证登录。成功登录。案例D-弱口令导致身份证泄露依旧是打开小程序前抓包这次没发现什么于是开始测试功能。运气非常好一个教师登录界面用弱口令进去了。但登录成功后的响应很奇怪并没有token存在。登录进去后发现是一个考勤系统在考勤统计里泄露了62名学生的姓名、身份证、手机号信息。这个接口是通过offlineClassId直接获取该班级下学生的考勤信息。反编译小程序后提取里面的API接口发现存在一个接口推测是通过学生身份证和unitId来获取学生的班级。随后我就用获取到的身份证列表和unitId进行爆破发现其中一个学生有两个班级。获取学生姓名、身份证、手机号的接口需要传递offlineClassId这里用新获取的offlineClassId再次调用接口又泄露了40名学生的姓名、身份证、手机号。准备继续滚雪球也就是用新获取的身份证调用刚才的接口很不幸没发现新的offlineClassId。总共泄露了6240-1101名学生因为有一个学生是重复的同时在两个班级里面的姓名、身份证、手机号信息。这里也有一个逻辑缺陷因为老师登录后只会获取offlineClassId、unitId、offlineClassName后面调用接口大部分也依赖这三个值。但很明显学生肯定也知道自己的offlineClassId、unitId、offlineClassName于是就可以调用该教师接口发现其他学生的身份证信息实现垂直越权。其他教师接口理论上也可以调用但因为是考勤系统这里就没继续验证。总结前言提到的小程序漏洞挖掘小技巧细心的读者一定发现了每次打开小程序前我都会先用BP拦截数据包打开小程序后逐个分析每个包于是发现了小程序的appsecret泄露和session_key泄露。其他的反编译小程序分析JS、弱口令和逻辑缺陷都属于很常规的方法。
延伸阅读

更多相关文章

2026/10/19 3:38:10

利用IPv6直连搭建《我的世界》Java版服务器,告别内网穿透高延迟

和朋友联机玩《我的世界》Java版,还在为内网穿透的复杂配置和高延迟烦恼吗?其实,如果你的网络环境支持 IPv6,就有一条更简单、延迟更低的“高速公路”可以直连。本文将手把手教你如何利用公网 IPv6 地址,实现《我的世界…

2026/10/18 21:40:52

智能送水系统:从传统到现代的数字化转型

1. 引言 在现代城市生活中,送水服务已成为许多家庭和企业的日常需求。从传统的电话预约、人工配送,到如今的智能调度、在线下单,送水系统正在经历一场深刻的数字化转型。本文将深入探讨送水系统的演变历程、核心技术架构、实现方案以及未来发…

2026/10/18 21:29:18

在线数罗汉,百度秒哒AI平台搭建

利用百度秒哒平台构建一个数罗汉的小游戏,将传统的“数罗汉”民俗小游戏线上化,AI工具很好用,以前不敢想的一些内容可以通过AI平台来构建。试用地址:线上数罗汉

2026/10/19 3:35:07

线性注意力实战:解决Transformer长序列显存与算力瓶颈

去年在一个文档问答项目里,序列长度跑到八万的时候,显存直接爆掉,训练进程被系统杀掉,排查下来发现注意力矩阵占了将近十几个GB。从那时候起我开始系统去研究各种替代标准注意力的方案,试过滑动窗口、稀疏注意力、低秩…

2026/10/19 3:35:07

FFmpeg关键帧本质:IDR帧才是解码器重启点

简介:本资源是一套基于FFmpeg与C实现的关键帧(I帧)提取完整工程,面向多媒体开发初学者及音视频方向进阶学习者,解决视频分析、截图、监控报警等场景中精准抽取独立完整帧的技术需求。压缩包共73个文件,含42…

2026/10/19 3:35:07

SSM+Vue萌宠之家在线管理系统:从数据库设计到前后端分离实战指南

1. 从选题到落地:为什么萌宠之家适合作为SSMVue毕业设计每年到了毕设答辩季,总能看到不少同学在“用什么技术栈”和“做什么题目”之间反复纠结。作为一个已经带过好几届毕业设计的过来人,我比较建议把“SSMVue萌宠之家在线管理系统”这一类题…

2026/10/19 3:35:07

open-code-review:基于CLI与LLM Agent的Git代码审查自动化实践

代码审查这件事,做过的都懂——它重要,但真到了日复一日的开发节奏里,很容易变成走过场。要么是 reviewer 扫两眼就点了 approve,要么是 PR 堆了三天没人看,要么是 review 意见全是"这里加个空格""变量…

2026/10/19 3:35:07

ComfyUI流匹配调度器EulerFlowMatchingDiscreteScheduler详解与调参指南

如果你也和我一样,在ComfyUI里把采样器、调度器翻来覆去对比过,多少会有一个感受:参数多,但真正拉开差距的往往不是那个“采样方法”,而是调度器怎么分配时间步。EulerFlowMatchingDiscreteScheduler这个名字一长串&am…

2026/10/19 3:30:07

Zynq xc7z020上烧FM25F32 QSPI避坑实录:硬件接线到U-Boot启动验证

简介:针对Xilinx Zynq平台在Vivado SDK中不支持国产复旦微FM25F32 QSPI Flash、导致启动镜像无法烧写的问题,这套程序包给出了完整的实测验证方案。设计基于XC7Z020 FPGA与FM25F32 NOR Flash,通过自编烧写测试程序成功写入uboot与FSBL&#x…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑