全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  应聘面试  >  网络安全面试题

微信小程序渗透测试tips

发布时间:2022-10-28 10:18:00
发布人:wjy

  01

  关于微信小程序渗透可能很多小伙伴们还停留在听过但没实操过的阶段,那么以测试人员的视角出发究竟到底什么是微信小程序呢?

  通过查阅微信小程序的开发文档在《起步》章节中有介绍到:小程序主要的开发语言是JavaScript且同普通的网页开发相比有很大的相似性。这么来看微信小程序的测试大体同web端测试应该没什么区别。

  具体该怎么做呢,首先让我们一起来回顾一遍小学二年级学过的web系统测试流程,大体就是浏览功能,浏览前端源码,然后抓包改包构造包。那么这些测试方法该怎么对应到小程序中去呢?

  02

  首先是浏览功能。通过观察功能点推测可能存在逻辑漏洞,这点很简单通过模拟器或者测试机安装微信然后通过小程序入口打开需要测试的小程序即可。

  03

  众所周知在web系统测试中经常会碰到一些隐藏接口或者是敏感的注释信息,往往我们可以通过浏览器自带的调试功能或者View Page Source来浏览源码,进行相关信息的查找工作。那么并非运行在浏览器上的微信小程序该怎么F12查看源码呢?

  首先让我们先简单认识一下 .wxapkg 它是微信小程序的包后缀,此类文件是一个二进制文件,且文件结构如下图(该图引用至lrdcq 2017年发表的微信小程序阅读笔记 注:未对该笔记中技术点做验证可能某些技术点可能已过时仅提供参考)。

微信小程序渗透测试tips1

微信小程序渗透测试tips2

  因为篇幅限制(能力有限)解包的技术细节不做深入探究。有兴趣的同学可自行了解,或者期待我们未来某一期的文章。以下文章内容只是对工具的使用以及一些踩坑点做说明;

  在开始前先贴上我的环境

  模拟器:逍遥模拟器(安卓版本为7.1)

  nodeJs:v14.15.3

  wxappUnpacker:https://github.com/xuedingmiaojun/wxappUnpacker

  微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

  那让我们开始,通过模拟器获取wsapkg文件。该文件的存储路径位于/data/data/com.tencent.mm/MicroMsg/{32位的16进制字符串文件夹}}/appbrand/pkg/

  如下图所示:

微信小程序渗透测试tips3

  由于文件的命名毫无规则可循所以只能通过下载时间来判断哪个是最新的包,然后通过adb将其传输到本地备用。

微信小程序渗透测试tips4

  简单配置npm让其使用淘宝镜像,加速依赖包的安装

  命令:

  npm config set registry https://registry.npm.taobao.org

  验证配置是否生效:

  命令:

  npm conf get registry

  返回如下:

微信小程序渗透测试tips5

  然后切换至wxappUnpacker项目目录。

  依次执行以下命令。

  npm install安装依赖npm install esprimanpm install css-treenpm install cssbeautifynpm install vm2npm install uglify-esnpm install js-beautify

  接着我们开始解包,windows系统使用bingo.bat, linux系统使用bingo.sh。

  注意部分小程序可能存在分包即不仅仅只有一个主包,该情况可以使用-s参数来指定主包的源码路径即可自动将子包的wxss,wxml,js解析到主包对应位置下。

  解包的命令如下:

  解主包:

  ./bingo.bat testpkg/master-xxx.wxapkg

  该命令会将主包解出的源码存放在testpkg目录下的master-xxx目录中

  解子包:

  ./bingo.bat testpkg/sub-1-xxx.wxapkg -s=../master-xxx

  该命令会将子包解出的源码存放在testpkg目录下的sub-1-xxx目录中,并自动将wxss,wxml,js解析到testpkg /master-xxx目录中(解分包时不推荐使用相对路径,碰到报错请使用绝对路径或切换到linux平台)

  目录示意图如下:

微信小程序渗透测试tips6

  将解包完的源码导入微信开发者工具,并在详情-

  本地设置中勾选不校验合法域名。

微信小程序渗透测试tips7

  在设置-

  代理设置中设置burp监听地址。

微信小程序渗透测试tips8

  测试抓包。

微信小程序渗透测试tips9

  04

  什么以上方法无效碰上了反编译失败或反编译后的小程序无法在本地开发环境中跑起来,遇到这种疑难杂症咋办呢。是否可以直接通过设置模拟器或者测试机的系统代理直接抓包呢。

  答案是可以的!但是由于Android 7.0及之后系统默认的网络安全性配置变高导致系统默认不在信任用户添加的CA证书,只信任每个应用自己定义的CA证书集以及系统预装的CA证书。那么只需要把burp或者其他抓包软件的证书添加到/system/etc/security/cacerts/中即可。

微信小程序渗透测试tips10

  首先让我们从burp中导出证书。

微信小程序渗透测试tips11

  安卓系统中的证书命名规则为<certificate_hash>.:Certificate_Hash表示证书文件的hash值,Number是为了防止证书文件的hash值一致而增加的后缀。证书的hash值是可以由openssl计算得出具体命令如下:

  openssl x509 -inform DER -subject_hash_old -in <certificate_file>

微信小程序渗透测试tips12

  然后开始制作证书

  type 1.der > 9a5ba575.0openssl x509 -inform DER -text -in 1.der -out 1 (获取证书信息)type 1 >> 9a5ba575.0 (将证书信息追加的9a5ba575.0中)

  接下来通过adb或其它方式将证书传输到手机,若使用adb传输需要打开开发者模式中的usb调试功能。

微信小程序渗透测试tips13

  通过adb devices 列出可用设备。

微信小程序渗透测试tips14

  当存在可用设备后就可以将证书文件传输到模拟器中了,命令如下

  adb push <certificate_file_path>/sdcatd/

微信小程序渗透测试tips15

  通过adb shell 进入手机

  进入后记得使用su切换为root权限,否者会因为权限问题无法进行某些操作(出现#即代表当前权限为root,因为我之前执行过所以进来之后就是root权限了)

微信小程序渗透测试tips16

  挂载 /system目录为可读写。

微信小程序渗透测试tips17

  移动刚拷贝进来的证书到系统证书目录下。

微信小程序渗透测试tips18

  最后修改权限重启。

微信小程序渗透测试tips19

  设置系统代理为burp监听地址后打开小程序查看抓包结果。

微信小程序渗透测试tips20

  打开小程序成功抓到包。

微信小程序渗透测试tips21

  05

  看完是不是感觉被坑了,说好的微信小程序渗透测试呢?还不是标题党骗我流量。

相关文章

华为外包网络安全面试题-网络安全常见攻击类型与防御措施

2023-07-25

网络安全程序员面试题

2023-07-21

抓包是什么意思

2023-03-02

什么是xss跨站脚本攻击

2023-03-02

webshell攻击是什么

2023-03-02

sqlserver注入拿webshell-csdn有哪些必要条件?

2023-03-02
在线咨询 免费试学 教程领取