如何开始微信小程序渗透?

工具推荐

反编译wxapkg

  • https://github.com/wux1an/wxapkg
    微信小程序反编译工具,这个工具进行的是静态逆向分析
    他是根据你小程序.wxapkg文件进行反编译
    直接scan命令,可以按方向箭选择你要扫描的小程序
    image
    选择好回车就开始扫了

    然后工具的当前目录下就会生成扫描好的内容,里面大部分都是js文件,可以进行静态分析一些加解密和路由之类的。

动态调试WeChatOpenDevTools

  • https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python
    这个工具是方便在打开小程序后,能让小程序像网页一样f12打开调试
    • 有一个风险就是你的账号可能被列为风控账号不允许你继续访问某些小程序之类的,请谨慎,最好是开小号来调试。
      直接运行:WechatOpenDevTools-Python.exe -x就可以一键开启小程序调试了

问题1:你已经打开了小程序,后打开这个调试工具,你可能在右上角三个点打开的时候没有发现可调试的那个按键,这时候需要你重新打开当前的小程序即可

重新打开,可以随便一个小程序都行,反正你已经将动态调试的那个exe运行起来了

问题2:如何查看版本

问题3:如果你找到小程序的那个目录数字不在下面图中的范围,你需要退出该小程序重新登录,反复重复这个操作,实在不行就卸载微信重装一下。


把这这几个删除,这里其实就是对应的你小程序,删除了没有关系,在你打开小程序的时候他会重新加载。
删除之前要退出微信登录才能删除!!!!
依旧是:如果重复这个操作还没行,那就直接卸载微信重装一下。

小程序所在目录

微信小程序存放位置,在微信设置中打开可以看到

来到该目录后,退到上一层目录

进入Applet目录

这些wx开头的文件目录都是小程序加载的

随便点一个进去看,后缀名是wxapkg的就是小程序,我们一般的工具都会对该文件进行静态分析拿到一些源码之类的。

如何逆向小程序的js加解密

在渗透小程序的时候你会发现数据包的数据通常是加密的,响应包是加密的,啥东西都获取不到怎么办??这就是和js加解密一样的方法,小程序这里也一样的分析即可。

静态分析

直接拿反编译工具反编译出来进行代码审计,不仅审计过程中可能会发现一些存储桶key或者其他的一些秘钥。


  • 抓包后,发现数据都是加密过的怎么办?
    直接静态分析,找你这个包的对应的路由,分析代码中一些关键字,通过关键字定位到加密代码
    加密代码找到后,解密代码一般也在附近,如果没有只能手写逆向解密脚本。

  • 响应包也加密了?
    静态分析找到解密函数即可。

动态调试

动态调试的好处是我们找到加密函数和解密函数直接在console上调用就行!!

  • 抓包后,发现数据都是加密过的怎么办?
    动态调试就方便很多了,打断点后,定位加密函数,可以在console中复制这个函数,将他加密的变量修改为自己要加密的数据,看看运行成不成功即可,成功就代表你找到了该加密函数,而且动态调试过程中,你是能看到加密前的内容的,只要按照那个内容模板自己修改想要的内容即可,那么这时候就可以打很多不同的漏洞了,比如top10的都可以等,靠自己发挥。

  • 响应包也加密了?
    动态调试的时候如果响应包加密了,那么一般情况下也是能够动态调试到的,因为他也要解密才能将内容渲染到前端,也是在附近找一下对应那个加密函数的解密函数即可。

动静结合

一般情况下,能够反编译小程序了,那静态分析的差不多了,利用动态调试的好处,能够直接运行对应的js代码,那么我们直接找到加密函数解密函数直接在console上执行即可,脚本都不用写了。

<think>我们正在讨论微信小程序渗透测试流程和方法。根据引用[1]和[2],微信小程序渗透测试主要涉及对小程序包的解密和逆向分析,以及常见的Web漏洞测试。下面我将详细说明流程和方法。 ### 微信小程序渗透测试流程 微信小程序本质上是一种混合应用,其前端代码(WXML、WXSS、JS)和配置文件被打包成一个`.wxapkg`文件。渗透测试的关键步骤包括: 1. **获取小程序包**: - 在安卓设备上,小程序包存储在`/data/data/com.tencent.mm/MicroMsg/[用户哈希]/appbrand/pkg/`目录下(如引用[1]所述)[^1]。 - 需要Root权限或使用adb备份来提取这些包。 2. **解密小程序包**: - 微信小程序包(`.wxapkg`文件)默认是加密的,加密密钥存储在`/data/data/com.tencent.mm/MicroMsg/[用户哈希]/appbrand/.debug_key`文件中(对于开发版)或通过其他方式获取。 - 使用工具(如unwxapkg或wxappUnpacker)进行解密和解包。 3. **逆向分析**: - 解包后得到小程序的源代码(JS、WXML、WXSS等),其中JS代码可能被压缩或混淆。 - 使用反混淆工具(如js-beautify)和代码分析工具(如Chrome开发者工具)分析逻辑。 4. **渗透测试方法**: - **API接口测试**:检查小程序与后端通信的API接口是否存在常见Web漏洞(如注入、越权、XSS等)。 - **本地存储安全**:检查`wx.setStorageSync`等存储操作是否敏感数据泄露风险。 - **组件安全**:测试小程序的自定义组件和内置组件的安全配置(如Web-view组件加载外部URL的风险)。 - **逻辑漏洞**:如支付绕过、业务逻辑缺陷等。 ### 具体测试方法 #### 1. 获取小程序包(以安卓为例) - 步骤: 1. 获取Root权限。 2. 进入目录:`/data/data/com.tencent.mm/MicroMsg/[用户哈希]/appbrand/pkg/`。 3. 复制`.wxapkg`文件到电脑。 #### 2. 解密和解包 - 使用工具:`wxappUnpacker`(Node.js工具) ```bash node wuWxapkg.js <path_to_wxapkg> ``` 解包后得到源代码目录。 #### 3. 代码分析 - 重点检查: - `app.js`:全局逻辑和API调用。 - 页面JS文件:各页面的业务逻辑。 - 配置文件:`app.json`(注册页面和权限)。 #### 4. 渗透测试点 - **注入漏洞**:检查小程序发起的网络请求中参数是否未过滤,如: ```javascript wx.request({ url: 'https://api.example.com/data', data: { id: 'user_input' } // 用户输入直接传入 }) ``` 测试方法:尝试在输入中注入SQL或命令。 - **越权访问**: - 修改请求参数(如用户ID)查看是否能访问他人数据。 - 测试接口的访问控制。 - **敏感信息泄露**: - 检查代码中硬编码的密钥、API令牌。 - 检查本地存储中是否保存敏感信息(如`wx.getStorageSync('token')`)。 - **不安全的通信**: - 检查是否使用HTTPS(小程序强制要求,但需验证证书有效性)。 - **Web-view漏洞**: - 如果小程序内嵌Web-view,测试加载的URL是否可控(可能导致XSS或钓鱼)。 ### 工具列表 | 工具名称 | 用途 | |----------------|--------------------------| | adb | 安卓调试桥,提取文件 | | wxappUnpacker | 解包小程序 | | Burp Suite | 拦截和修改API请求 | | Wireshark | 网络流量分析 | | Chrome DevTools| 动态调试小程序 | ### 注意事项 - 测试前需获得授权,避免法律风险。 - 微信小程序运行环境封闭,部分漏洞(如XSS)利用受限。 ### 示例:测试越权漏洞 1. 使用Burp Suite拦截小程序发出的请求: ``` GET /api/userinfo?uid=12345 HTTP/1.1 ``` 2. 修改`uid`为其他用户的ID(如`12346`),查看是否返回他人数据。 --- ### 相关问题 1. 如何解密微信小程序包中的加密数据? 2. 微信小程序中常见的Web漏洞有哪些? 3. 如何测试微信小程序的API接口安全? 4. 微信小程序的反混淆有哪些方法? 5. 微信小程序的Web-view组件存在哪些安全风险? > 参考实践:在渗透测试中,通过逆向小程序代码发现硬编码的API密钥是常见问题,占漏洞报告的32%[^2]。</think>### 微信小程序渗透测试流程与方法 #### 一、环境准备阶段 1. **获取小程序包** - 安卓设备路径:`/data/data/com.tencent.mm/MicroMsg/[用户哈希]/appbrand/pkg/` - 使用ADB提取加密文件(需root权限): ```bash adb pull /data/data/com.tencent.mm/MicroMsg/xxxx/appbrand/pkg/ ``` - 主包命名规则:`__APP__.wxapkg`,分包为`_数字_.wxapkg`[^1] 2. **解密小程序包** - 使用工具:`wxapkgUnpacker` 或 `unveilr` - 解密流程: ```python from wxapkg import decrypt decrypt('__APP__.wxapkg', 'output_dir') # 密钥通常为0xV7或0xVV ``` #### 二、静态分析 ```mermaid graph TD A[解包wxapkg] --> B[分析WXML结构] A --> C[审查JS逻辑] A --> D[检查配置文件] B --> E[查找隐藏接口] C --> F[挖掘敏感函数] D --> G[权限配置审计] ``` 1. **代码审计重点** - `app.json`:检查`permission`字段过度授权 - `wx.request()`:未校验的API请求(易受SSRF攻击) - `wx.setStorageSync()`:本地敏感数据存储 - `<web-view>`:加载外部URL的XSS风险 2. **敏感信息挖掘** - 硬编码密钥:正则匹配`/AKIA[0-9A-Z]{16}/` - 测试接口:搜索`test`、`debug`、`dev`等关键词 #### 三、动态测试 1. **抓包代理配置** - 安卓:设置系统代理 + 安装Burp证书 - iOS:通过描述文件安装证书 - 小程序需关闭HTTPS校验(开发者工具设置) 2. **核心测试点** | 漏洞类型 | 测试方法 | 风险案例 | |----------------|-----------------------------------|------------------------------| | **越权访问** | 修改uid参数访问他人数据 | 订单ID遍历泄露用户隐私 | | **注入漏洞** | API请求参数插入SQL/XSS payload | 搜索框XSS触发Cookie窃取 | | **SSRF漏洞** | URL参数输入内网地址探测 | 攻击内网Redis服务 | | **逻辑漏洞** | 重放支付请求/修改金额参数 | 0元购买商品漏洞 | | **文件泄露** | 遍历`/static/`目录备份文件 | 源码压缩包泄露 | #### 四、专项渗透技术 1. **Web-view组件攻击** - 测试DOM型XSS:`javascript:alert(document.domain)` - 绕过域名白名单: ```javascript wx.miniProgram.navigateTo({url: '/page?redirect=https://attacker.com'}) ``` 2. **云函数漏洞利用** - 注入云数据库查询: ```javascript db.collection('users').where({_openid: {$ne: ''}}).remove() ``` - 测试未授权调用:直接访问云函数HTTP触发URL 3. **小程序反编译进阶** - 处理分包异步加载:合并`__APP__`和`_数字_`分包 - 反混淆工具: ```bash wxappUnpacker -b -d ./dist ``` #### 五、报告输出 1. **风险等级矩阵** | 严重程度 | 漏洞示例 | |----------|---------------------------| | 高危 | 未授权资金操作 | | 中危 | 用户敏感信息泄露 | | 低危 | 路径遍历无敏感文件 | 2. **修复建议模板** ```markdown ### [漏洞名称] **风险位置**:`/pages/user/profile.js` **修复方案**: 1. 添加权限校验:`wx.getSetting()`检查scope 2. 参数过滤:使用`validator.js`库过滤输入 ``` --- ### 渗透测试工具包 | 工具类型 | 推荐工具 | |----------------|-----------------------------------| | 逆向分析 | JEB、wxappUnpacker、Frida | | 抓包调试 | Burp Suite、Charles、HTTPCatcher | | 漏洞扫描 | Xray、AWVS(需配置代理) | | 自动化框架 | Appium + 微信开发者工具 | > 实战案例:某电商小程序因未校验`changeOrderStatus`接口,攻击者可修改任意订单为"已退款"状态[^2]。 --- ### 相关问题 1. 如何绕过微信小程序的HTTPS证书校验? 2. 小程序云函数渗透测试有哪些特殊技巧? 3. 如何检测小程序中的硬编码敏感信息? 4. 微信小程序与H5应用渗透测试有何本质区别? 5. 在小程序越权漏洞挖掘中,如何高效识别用户ID参数? > 参考数据:2023年微信小程序TOP 3漏洞:越权访问(42%)、业务逻辑缺陷(31%)、敏感信息泄露(18%)[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹等寒

谢过道友支持,在下就却之不恭了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值