返回文章列表

我们将定期在这里发布文章

微信小程序安全评估基础

文章编号:测试经验

文章日期:2021-09-29


前言

           “FSRC经验分享”系列文章,旨在分享焦点安全工作过程中的经验和成果,包括但不限于漏洞分析、运营技巧、SDL推行、等保合规、自研工具等。

    欢迎各位安全从业者持续关注~ 


1微信小程序基础知识

    

微信小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:

640 .PNG

一个小程序页面由四个文件组成,分别是:

640.png


2      环境、工具准备


反编译测试方法

                       

之前高版本的安卓系统和微信程序不支持抓取小程序的请求包,常规测试经验,需要准备以下环境进行小程序的安全测试


  • 安卓模拟器(安卓版本5.x,推荐使用逍遥模拟器)

  • 微信7.0以下版本

  • adb工具

  • monitor.bat工具(方便导出文件,非必须)

  • nodeJS环境

  • CrackMinApp工具

  • BurpSuite抓包工具                                                                        


Proxifier+微信PC端

   

在微信PC端上线小程序功能后,也可以直接使用proxifier抓包啦


1、安装Proxifier,添加代理,指向burp/fuddler监听的端口 一定要勾选Use target hostname in proxy request if available

640 (1).png

       


2、设置代理规则微信小程序(wechatapplauncher.exe;wechatwe.exe;wechatapp.exe;wechat.exe)

640 (2).png

       

6401.PNG



3      小程序资产收集


资产收集决定了小程序安全评估的覆盖度,常见方式如下:

  • 直接询问开发人员(甲方专属)

  • 在目标网站中查看是否有小程序功能

  • 在微信中使用搜索功能

  • 第三方商情软件查找


详细的资产收集过程在此我们就不做进一步的探讨了


4反编译小程序


对小程序包进行反编译,获取小程序的源代码,进而获取更多的测试面。反编译的方式是从手机中导出wxapkg包,使用CrackMinApp工具直接操作。                         

导出小程序包

   
小程序文件在手机中的位置如下:
/data/data/com.tencent.mm/MicroMsg/{一串随机字符}/appbrand/pkg/

640 (11).png


每一个wxapkg包都对应一个小程序,但是无法直接通过文件名确定待测试的程序,实际测试时可以将所有文件删除,再点进待测的小程序,此时重新生成的文件即为对应小程序的文件。

以我司新一站小程序为例:

640 (3).png


将小程序包复制到CrackMinApp-master\wxapkg文件夹中

640 (4).png


使用CrackMinApp反编译

   
打开CrackMinApp,选择相应的小程序包即可以进行反编译。
反编译的目录如下:

640 (5).png


可以通过查找关键字或者直接阅读源码的方式来进一步做测试

640 (22).png

                       

5小程序评估重点


小程序的安全漏洞与传统的web漏洞类似,也可能出现SQL注入、XSS、越权等常规漏洞,测试思路是通过抓包反编译等尽可能获取更多的测试面,进而常规漏洞进行测试。其中较为常见的漏洞如下:

身份认证

   
暴力破解漏洞
验证码回显漏洞

接口鉴权

   
登录接口越权
查询接口越权

信息泄露

   
用户数据泄露
开发信息泄露


6典型漏洞分析


session_key泄露导致任意用户登录

   
登录时,前端传递code,开发者服务端会调用此接口去换取sessionkey,若不做任何处理直接返回给前端会导致session_key的泄露

640 (33).png


通过api接口获取encryptedData与iv,微信官方有API可以通过sessionkeyencryptedData与iv获取Data值

640 (6).png

                       

将想要登录的手机号替换data包中的值,重新加密,并替换请求包,成功登录对应手机号                        


小程序绑定手机号越权查看用户信息

   
微信账号登录后,提示绑定手机号

640 (7).png

                       

此处抓包修改loginid,直接越权
                       

640 (8).png


5免责声明


本文中提到的相关资源已在网络公布,仅供研究学习使用,请遵守《网络安全法》等相关法律法规。


6参考资料


微信小程序反编译(by Mr.K)

https://www.sec-in.com/article/1012

 


焦点安全,因你而变
焦点科技漏洞提交网址:https://security.focuschina.com