移动端渗透测试—小程序
服务端渗透测试
MITM(中间人攻击)抓包
通过配置代理工具捕获小程序的网络请求,以分析潜在的安全问题。
配置 CA 证书
- 使用 BurpSuite 生成 CA 证书。
- 将证书导入系统并完成配置,确保系统信任该证书。
设置代理工具 – Proxifier
工具:Proxifier 注册码:Proxifier 注册码 功能:为系统中的任意程序配置代理,灵活控制网络流量。
配置步骤:
打开 Profile → Proxy Servers,添加代理服务器:
- 输入代理地址和端口(如 BurpSuite 的代理地址,通常为
127.0.0.1:8080
)。 - 选择代理协议(HTTP/HTTPS/SOCKS)。
- 输入代理地址和端口(如 BurpSuite 的代理地址,通常为
配置 Proxification Rules(代理规则):
打开 Profile → Proxification Rules。
点击 Add,新建规则:
Name:自定义规则名称。
Applications:选择需要走代理的程序(如微信小程序)。
Action:选择代理方式:
- Proxy:所有流量通过配置的代理。
- Direct:不通过代理直接连接。
- Block:阻止所有网络连接。
微信小程序抓包
- 为微信小程序配置代理规则并启用。
- 打开 BurpSuite,启动拦截或其他相关功能。
- 访问微信小程序,即可捕获小程序的网络请求数据包。
客户端渗透测试
客户端渗透测试主要通过逆向分析微信小程序的 .wxapkg
文件,挖掘敏感信息,如密钥、Secret、后台 API 路径等。
微信小程序文件定位
小程序文件通常位于微信保存目录的上级目录中的 Applet 文件夹内,以 wx
开头的文件夹存储小程序数据。
- 根据文件夹的修改时间,确定目标小程序的文件夹。
- 文件夹内的
.wxapkg
文件即为小程序的包文件。
微信小程序解包
工具 1:wxapkg
功能:将 .wxapkg
文件解包为 HTML、CSS、JS、JSON 文件,但无法还原完整的工程目录。
使用命令:
wxapkg.exe scan
wxapkg.exe scan --disable-beautify
工具 2:KillWxapkg
功能:解包 .wxapkg
文件并还原小程序的完整工程目录。
使用命令:
KillWxapkg_2.4.1_windows_amd64.exe -id [wx文件夹名] -in [__APP__.wxapkg] -pretty -restore -save
- -id:小程序目录文件名(如
wx123456789
)。 - 执行命令后,可获得完整的工程目录。
使用微信开发者工具分析
下载并安装 微信开发者工具。
将解包后的工程目录导入开发者工具。
打开项目,检查代码中是否存在敏感信息(如密钥、API 路径)或风险接口。
- 微信开发者工具通常会提示敏感信息或高风险接口。
小程序常见信息泄露漏洞
信息泄露可能出现在服务端(需抓包分析请求/响应数据)或客户端(需反编译小程序分析 JS 代码)。以下为常见漏洞及挖掘方法。
参考教程:
小程序 session_key 泄露漏洞
危害:导致任意手机号登录。
特点:微信小程序独占。
挖掘时机:小程序登录时(通常小程序打开后会自动登录)。
触发登录页面:
- 检查小程序是否有 退出登录 功能,点击退出后重新登录。
- 打开小程序,启动 BurpSuite 拦截,丢弃(Drop)自动登录的请求包,强制触发登录登录页面所需的请求。
分析步骤:
- 检查请求/响应数据中是否包含
session_key
。 - 查找登录请求/响应中的
iv
和encryptedData
(小程序登录时通常包含这两个字段)。 - 若发现
session_key
、iv
和encryptedData
,可尝试解密数据。
- 依赖:需要安装 Jython(Java 实现的 Python 解释器)。
安装步骤:
安装 Jython:
在 BurpSuite 中安装插件:
- 打开 Extensions,选择 Extension type 为 Python。
- 添加
bp_miniprogram_decrypt
插件。
漏洞利用:
- 使用插件解密
encryptedData
,获取敏感信息(如手机号)。 - 修改解密后的数据(如替换为其他手机号),重新加密。
- 将修改后的加密数据替换到请求包中,尝试实现任意用户登录。
小程序 AppSecret 密钥泄露漏洞
危害:攻击者可以获取 AppSecret
调用服务器后台的所有接口(接口如何使用,参考 官方文档)。
特点:一般即时通讯 APP 容易出现此类漏洞,如钉钉、微信、企业微信等。
漏洞原因:
AppSecret
是小程序的唯一凭证密钥,用于获取全局唯一后台接口调用凭证(access_token
),需妥善保管在后台服务器中。若后端 API 接口将 AppSecret 敏感信息返回给前端(包括前端请求或小程序代码内传输、记录),会导致密钥泄露。
检测方法:
- 代码层面:检查小程序前端代码和后端 API 接口,确认是否存在 AppSecret 的明文传输或记录,尤其关注 API 响应中是否包含
AppSecret
。 - 抓包分析:对小程序网络请求进行抓包,检查请求响应中是否包含
appid
和AppSecret
敏感信息,特别是在 HTTPS 流量中可能存在泄露。
利用方法:
- 通过抓包获取泄露的
appid
和AppSecret
。 - 例如利用获取的
AppSecret
调用接口获取access_token
等。 - 随后使用
access_token
调用小程序后台接口,可以获取到相关信息。
小程序云 AK/SK 泄露漏洞
危害:AK/SK 是公有云(阿里、腾讯、华为、京东、字节、百度、AWS、Google 等)的访问密钥,攻击者可以使用 AK/SK 接管部分或整个公有云。
特点:所有的网站、APP 都可能发生 AK/SK 泄露。
漏洞点:JS,反编译后的 APK 或小程序,SpringBoot actuator heapdump 等。
漏洞原因:
AK/SK
(访问密钥 ID 和秘密访问密钥)是用于生成用户与云平台 API 通信的凭据,其中 SK 必须保密,否则会导致安全问题。攻击者获取 AK/SK
后可调用云厂商 API,接管云账户、云主机、云存储等功能。
漏洞成因包括:
- 小程序代码泄露 AK/SK:将
AK/SK
硬编码到小程序代码或配置文件中,攻击者通过反编译小程序包即可获取。 - 网络请求泄露 AK/SK:后端 API 将
AK/SK
返回至前端,攻击者通过网络抓包获取后端返回的数据。
检测方法:
- 代码层面:检查小程序代码或配置文件,寻找
AK/SK
是否硬编码(如在源代码、配置文件中直接可见)。 - 网络流量层面:对小程序进行抓包,分析后端 API 返回的数据,检查是否存在 AK/SK 字段泄露。
利用方法:
- 攻击者获取
AK/SK
后,可调用云厂商 API,接管云账户、云主机、云存储等功能,或通过云平台管理工具导入云资源。
工具:cloudsword