随着小程序数量的爆发式增长,其特有的安全风险也逐步凸显出来。本文基于微信小程序测试过程中的解包及抓包的技巧,总结下微信小程序安全测试的思路。
1、小程序解包(反编译)
(1)安装手机模拟器,比如说夜神、MuMu
(2)下载和安装两个应用,微信和RE文件管理器
(3)获取root权限
(4)打开微信,搜索相对应的小程序,然后再打开RE文件管理器,定位到目录:
(5)下载微信小程序反编译脚本,解包。
代码语言:javascript复制https://github.com/xuedingmiaojun/wxappUnpacker.git
解主包:
代码语言:javascript复制./bingo.sh 主包.wxapkg
解分包:
代码语言:javascript复制./bingo.sh 分包.wxapkg -s=主包目录
合并分包内容,成功获取小程序前端源码。
基于小程序的前端源码,我们可以从JS敏感信息泄露、隐藏接口漏洞等方向进行漏洞挖掘。
2、小程序抓包
抓取数据包是小程序安全测试中最关键的一步。抓包的方式有多种,比如使用Android内核版本7.0以下的模拟器,通过XPosed JustTrustMe抓包;使用微信版本7.0以下通过Burp CA抓包。
这里分享一个比较简单的方法,使用Charles进行小程序抓包。
(1)环境准备
本机电脑开启Wifi共享,将自己手机和电脑连上同一个wifi。
(2)Charles设置:
下载地址:
代码语言:javascript复制https://www.charlesproxy.com/download/
第一步:配置HTTP代理,设置代理:主界面—Proxy—Proxy Settings
选择在8888端口上监听,然后确定。勾选了SOCKS proxy,还能截获到浏览器的http访问请求。
第二步:配置SSL代理:首先在charles的 Proxy选项选择SSL Proxy Settings
第三步:为手机设置代理
在手机接入电脑wifi,配置手动代理,输入安装Charles的电脑的网络地址,端口填8888。以IOS为例,在Safri上打开Charles的根证书下载网址: chls.pro/ssl ,点击允许,开始下载。
第四步:SSL 代理设置,在Proxy-SSL Proxying Settings,添加域名
到这里完成设置,通过手机访问就可以看到获取到小程序的数据包。
基于小程序的数据包,我们可以看到前后端业务交互的过程,重点关注业务逻辑漏洞、API 接口可能存在的安全漏洞。