新增攻击面:影子“小程序”
好的,我现在要帮用户总结这篇文章的内容。用户的要求是用中文,控制在100字以内,不需要特定的开头,直接描述文章内容。 首先,我快速浏览文章,发现它主要讲的是如何发现和攻击微信中的“影子小程序”。这些小程序不可搜索,但可以通过备案信息和AppID来访问。文章详细介绍了获取AppID的方法、跳转技巧以及安全测试的方法。 接下来,我需要提炼出关键点:影子小程序的定义、发现方法(备案查询、AppID获取)、绕过搜索限制的技术(API跳转、自建小程序)、安全测试步骤(反编译、自动化探测)、工具使用(HaE插件、AI辅助)以及结语部分强调的风险。 然后,我将这些要点浓缩成简洁的语言,确保在100字以内。要注意逻辑连贯,涵盖主要方法和工具,同时突出安全威胁。 最后,检查字数是否符合要求,并确保语言流畅自然。 </think> 文章介绍了一种通过备案信息和AppID绕过搜索限制发现微信“影子小程序”的方法,并详细说明了如何获取AppID、跳转验证及利用反编译、自动化探测和AI辅助进行安全测试的过程。 2025-12-4 09:40:43 Author: www.freebuf.com(查看原文) 阅读量:1 收藏

声明:本文旨在秉持“分享至上”的原则,公开本人于今年六月发现的一个新型攻击面。

特此说明:

- 本文内容仅供技术交流与学习参考;

- 所涉及工具均未开源,亦不提供下载或使用支持;

- 任何因使用本文所述方法或思路而引发的法律后果,均由使用者自行承担;

- 欢迎转载,但严禁任何形式的抄袭或篡改。

一、问题的起点:为什么有些小程序“搜不到”?

在对微信小程序进行安全测试时,我们常遇到一个现象:明明某企业有小程序,却无法通过微信搜索找到它。这并非小程序不存在,而是由于以下原因被“隐藏”:

  • 小程序尚在审核中;

  • 开发者关闭了“可被搜索”选项;

  • 内容涉及敏感领域,被平台限制收录;

  • 仅为内部员工或特定用户开放。

这类未公开、不可搜索但实际运行的小程序,我们称之为 “影子小程序”。

它们往往缺乏安全防护意识,可能暴露管理后台、调试接口甚至测试数据,成为高价值攻击入口。

那么,如何发现并触达这些“隐形”资产?

二、第一步:从 ICP 备案入手,定位潜在小程序

尽管小程序运行在微信等封闭生态中,但其后端服务或关联官网几乎都需要完成 ICP 备案。

操作思路:

  1. 通过工信部备案系统或第三方平台查询目标企业小程序备案信息;

  2. 或者获取其名下所有已备案域名,进行资产收集,检查是否嵌入了小程序跳转功能如 <wx-open-launch-weapp>标签。

关键洞察:备案信息是连接“传统 Web 资产”与“小程序资产”的桥梁。


三、关键突破:绕过搜索限制,直接跳转到目标小程序

微信官方提供了一个强大但常被忽视的 API:

wx.navigateToMiniProgram({
appId: '',
path: 'page/index/index?id=123',
extraData: {
foo: 'bar'
},
envVersion: 'develop',
success(res) {
// 打开成功
}
})

核心能力:

只要知道目标小程序的 AppID,即使它未公开、不可搜索,也能从任意已上线的小程序中直接跳转访问。

这意味着:“搜不到” ≠ “不可达”。

四、如何获取目标小程序的 AppID?

AppID 是全局唯一的 18 位字符串(如 wx1234567890abcdef),一旦获得,即可实现定向跳转。常见泄露途径包括:

1

方法一:通过备案关联 + 第三方接口聚合查询

  • 利用已公开的小程序备案数据库(部分第三方平台提供 API);

  • 输入企业名称,自动返回其名下关联的小程序 AppID 列表;

  • 我们已将此类接口本地化,支持一键批量查询。

方法二:从微信公众号抓包提取

  • 访问微信公众号平台,通过小程序管理功能点抓包,可从接口中获取到返回的 AppID


五、没有自己的小程序?两种跳转替代方案

wx.navigateToMiniProgram只能在小程序环境中调用。若你没有自有小程序,可采用以下变通方式:

方案 1:自建“跳板小程序”

  • 注册一个个人小程序(免费);

  • 在首页代码中写入跳转逻辑,传入目标 AppID;

  • 用于精准验证小程序是否存在及可访问性。

方案 2:利用微信内置浏览器中转

  • 构造一个网页,嵌入微信支持的 URL Scheme 或 Universal Link;

  • 通过短链(如 t.cn)在微信内打开该页面;

  • 页面自动唤起目标小程序。

技术本质:将微信内置浏览器作为“中转站”,绕过必须依赖自有小程序的限制。


六、进阶测试:反编译 + 批量探测隐藏页面

通过上述方法,我们已成功跳转至目标“影子小程序”(即未公开、不可搜索但实际存在的小程序)。接下来,便可对其展开更深入的安全测试与攻击面挖掘。

1. 反编译提取完整路由

  • 使用团队自研工具对小程序包进行解包;

  • 还原 app-config.json中声明的所有页面路径(如 /pages/admin/index/pages/debug/tool);

  • 这些路径可能包含未在 UI 中暴露的高危页面。

2. 自动化批量跳转验证

为避免人工逐页点击,我们采用半自动化方案:

  • 强制开启 PC 微信 F12 调试模式(需特定环境);

  • 在 Console 中注入脚本,循环调用 wx.navigateTo遍历所有路由;

  • 同时配置 Proxifier + Burp Suite,将微信全部流量代理至 Burp。

let a = ["/pages/wechat-fans/index","/pages/index/index"];
let index = 0;
function navigateNext() {
if (index >= a.length) return;
wx.navigateTo({
url: a[index],
success: () => {
index++;
setTimeout(navigateNext, 3000); // 下一次跳转延时 3s
},
fail: () => {
console.error("跳转失败");
}
});
}
// 启动
navigateNext();

效果:所有页面加载触发的 API 请求、静态资源、鉴权校验等,均被捕获记录。

七、高效识别接口:HaE 插件分析

面对大量 HTTP 流量,人工筛选效率低下。引入 HaE 插件:

  • 基于正则规则自动高亮并提取业务接口;

  • 快速生成 API 资产清单;

  • 为后续漏洞测试提供精准目标。

八、AI 赋能:快速审计

小程序核心逻辑通常打包在 app-service.js中,该文件往往存在下面几个问题:

体积大(数万行);

高度压缩与混淆;

包含硬编码密钥、内部接口、跳转逻辑等敏感信息。

人工审计成本极高。

为此我们采用Ai辅助分析

  • 将格式化后的 JS 代码 + 精心设计的 Prompt 输入大模型(如 GPT-4、Claude);

  • 让 AI 帮助完成:

    • 1.识别敏感路由(如含 /admin/export的路径);

    • 2.提取硬编码凭证(API Key、Token、内网地址);

    • 3.还原页面跳转关系;

    • 4.标记无权限校验的高风险函数。

注意:AI 结果需人工验证,但可将分析时间从数小时压缩至几分钟。


十、涉及工具

  • HaE:Burp 插件,用于流量特征提取与高亮;

  • Venom:综合渗透测试平台,支持资产发现、空间测绘、数据处理;

  • 部分自研工具(未开源)。

所有工具仅限合法授权的安全研究使用。

结语

“影子小程序”是当前企业数字资产中的盲区。它们虽不可见,却可能承载核心业务逻辑、管理功能甚至测试数据。通过备案查询 → AppID 获取 → 跳转验证 → 路由探测 → 接口分析 → AI 辅助 的完整链路,我们能够系统性地发现并评估这类隐藏资产的风险。

安全的价值,在于照亮那些被忽略的角落。

参考信息

https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateToMiniProgram.html


文章来源: https://www.freebuf.com/articles/460444.html
如有侵权请联系:admin#unsafe.sh