最近测试小程序比较多,这里总结一下测试方法,先从小程序本地文件包开始;
获取小程序文件包并进行提取
获取文件包
入手目标:手机端、PC端
现在PC也能运行小程序了,按理说也跟手机端类似会有在本地的运行包,但是测试下来MAC的最新版2.5.0(现在2.6.0,依然没找到),没有找到类似wxapkg的文件;
在Windows PC端上,微信小程序wxapkg目录在C:\Users\xxx\Documents\WeChat Files\Applet\wxbxxxxxxxxxxxxxxd0\xx
然后Windows和Android的加密也不一样,应该说Android没有加密,只是编译打包好了,通过特定字节序拆分即可还原;而Windows平台需要解密后才可以还原;
以Android手机微信APP为例;
小程序存在目录为:/data/data/com.tencent.mm/MicroMsg/{UserId}/appbrand/pkg/
顺带IOS的目录为:/var/mobile/Containers/Data/Application/{程序UUID}/Library/WechatPrivate/{用户ID}/WeApp/LocalCache/release/{小程序ID}/
经测试发现,现在的小程序一般都比较大,通常不止一个wxapkg包,会出现分包的情况,一些老的小程序大部分就单个wxapkg包。
文件包格式解析
头部字节前后的块是固定的,可以此来还原;因为移动的还原工具有很多,大佬们的分析也很透彻,这里就不写了;
文件包还原
导入还原后的数据时会要求包含app.json/project.config.json的目录;测试发现单文件的小程序肯定是有的,但是多文件会在其中一个找到,然后多文件一般需要几个文件都导进去才可以跑起来,不然一片通红。
至此,小程序本地文件的提取、还原已经完成,那么我们有哪些测试思路和方向呢?
常规的本地硬编码
如获取开发者的appid和secret等
微信接口测试:
微信公众平台接口调试工具:http://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index
开发指南:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
获取appid和secret,便可以获取公众号管理权限;
获取access token:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET
获取服务器地址:https://api.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=ACCESS_TOKEN
查询接口-不一定有开通,开通了的话可以查看所有已经开通的接口服务;https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=ACCESS_TOKEN
其他接口要看开通情况来调用。
这里可以简单写个脚本,通过传入appid和secret参数来获取token,然后测试其他开通的接口。
加解密破解、证书验证绕过
现在很多小程序都存在数据加密或者验签操作(现在默认单向证书认证,也就是SSL pinning,可通过justTrustMe绕过,这里说的是双向认证),当需要绕过证书验证,或者解密数据内容时,本地还原的文件可以帮到我们;
接口未授权测试
获取更多的api进行测试,无需遍历各种api字典了;
特殊场景
内部服务未授权访问
测试接口
更多测试场景和思路等待挖掘
小程序相关信息收集
微服务信息收集小技巧:
很多子域名打开为空白页面,或者找不到访问路径的,特别是app.xxx.com、wx.xxx.com一类,一般为微信公众号的服务,或者小程序的服务,可以到微信搜索一下关键字;
微信小程序还有一个特别的地方可以看到相关域名;
如图,打开对应小程序,按红圈标记的顺序点开,在更多资料处可以看到相关的域名,以及该微信小程序的appid;
关于小程序抓包,目前微信小程序做了证书验证,常规APP抓包不可用,可以通过JustTrustMe+xposed的方式来抓;但是有时候觉得微信登来登去太麻烦,或者没有root环境,可以将测试的小程序转发到文件传输助手在PC端打开,然后开启全局代理抓包即可;
抓取了接口,获得所需参数,简单写个脚本,这样就可以加入信息收集的工具里面了。
本文作者:杉木@涂鸦智能安全实验室
漏洞悬赏计划:涂鸦智能安全响应中心(https://src.tuya.com)欢迎白帽子来探索。
招聘内推计划:涵盖安全开发、安全测试、代码审计、安全合规等所有方面的岗位,简历投递sec@tuya.com,请注明来源。
参考:https://www.hackinn.com/index.php/archives/672/
小程序文件结构:https://lrdcq.com/me/read.php/66.htm
解包工具:https://github.com/leo9960/wechat-app-unpack
Windows PC 微信小程序分析:https://blog.csdn.net/yeyiqun/article/details/109172556