• 11
  • 11
分享
  • 两方面讲透什么是微信小程序渗透测试——软件测试圈
  • 曼倩诙谐 2021-06-17 09:59:44 字数 1676 阅读 1528 收藏 11

  引言

  自2017年面世以来,微信小程序以其相较于APP的进入门槛更低,开发周期更短,费用更低的优势,已经构造了新的微信小程序开发环境和开发者生态。

  当前,微信小程序已经赋能了社交、娱乐、旅游出行、购物、餐饮、支付、理财等多种场景。

  但随着小程序生态的建立,其特有的安全风险也逐步显示出来:因为小程序本质也是网页交互,其通讯更容易被破解。

  本文将从客户端和服务器两个层面讲解微信小程序渗透测试。

  客户端层面

  客户端方面,主要是对微信小程序进行反编译,得到源代码,检测源代码的保护强度以及是否存在信息泄露,如密钥硬编码等。

  要进行反编译,关键是要获取小程序的 .wxapkg 文件。接下来以安卓手机为例,演示反编译的过程和需要的工具。

  前置条件:

  (1)一个root的安卓手机(安装RE文件管理器);

  (2)手机微信打开要测的小程序(打开后,微信会自动缓存小程序的.wxapkg文件);

  (3)一台安装了node.js运行环境的电脑(官网下载安装即可)。

  第一步:电脑上安装反编译工具wxappUnpacker

  gitbub下载wxappUnpacker:

  https://github.com/58810890/wxappUnpacker。下载完成后,到wxappUnpacker目录下安装依赖:

npm install esprima 
npm install css-tree 
npm install cssbeautify
npm install vm2
npm install uglify-es
npm install js-beautify

2-1.png

2-2.png

  安装完成后,输入如下命令查看,如正常返回,则表示成功。

2-3.png

  第二步:安卓手机上打开RE文件管理器,在如下目录找到小程序的.wxapkg文件:

  /data/data/com.tencent.mm/MicroMsg/(一长串字符串)/Appbrand/pkg

2-4.jpg

  将对应的wxapkg文件拷贝到电脑上wxappUnpacker目录的子目录testpkg下,这个目录是自己创建的。

2-5.png

  第三步:运行反编译的命令如下:

  node wuWxapkg.js  ./testpkg/_-238827099_223.wxapkg

2-6.png

  执行后,查看结果,如果出现如下信息,则表示反编译成功。

2-7.png

  反编译成功后,在vs code中打开即可看到源代码。

2-8.jpg

  服务端层面

  在服务端层面,主要是依据微信小程序的特性,模拟攻击者从SQL注入、越权访问、文件上传、CSRF以及信息泄露等漏洞方面进行测试,这个其实与常规的web安全测试类似。

  而测试的关键步骤就是进行微信小程序的报文抓取。

  这里推荐使用苹果手机进行测试,原因是Android7.0以上系统、微信7.0版本及以上均不信任用户自定义安装的个人证书,所以无法抓取小程序的HTTPS报文。

  因此,建议使用苹果设备,在设备上安装了抓包工具如Burpsuite的证书后,将其设置为根证书信任,这样就能抓取小程序的HTTP报文了。

  第一步:打开抓包工具,设置代理IP和端口

2-9.png

  第二步:在手机端的Wlan连接中,设置对应的代理IP和端口。

  第三步:打开微信小程序,操作功能,Burpsuite进行抓包。

  第四步:对抓到的报文进行分析, 如下面的请求报文中传了一个参数memberNo,看到这个参数一般就能想到去对参数进行篡改,看是否存在memberNo遍历、水平越权、SQL注入等等。

2-10.png

  对于如下HTTP响应报文,我们也可以检测是否有多余的信息回显、敏感信息泄露等。

2-11.jpg

  总结

  本文从客户端和服务器两个层面讲解了微信小程序渗透测试。

  在客户端层面,主要是通过获取小程序的wxapkg包,然后进行反编译,对源代码进行分析判断是否存在信息泄露和保护强度不足的漏洞。

  服务端层面,主要是通过中间人攻击的方式,截获报文,篡改报文从而检测是否存在SQL注入、越权访问、文件上传、CSRF以及信息泄露等漏洞。



刘沅斌   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 学习过测试理论的同学肯定都知道,测试人员参与项目的第一步,大部分都是需求评审,但是不少测试同学反馈,自己很少参与需求评审,需求会议也很少喊测试人员参与。我觉得这一方面可能是流程上各角色配合的问题,另一方面可能是因为测试在评审过程中没有体现出参与的价值。针对第一个可能,需要测试主动找产品沟通,一方面表达希望参与需求评审的意愿,另一方面也要求他们在需求评审时喊上测试。针对第二个可能,就需要测试人员从自身上做改进了,为什么这么说呢?我曾经参加过几次需求评审会议,就发现产品在那讲需求,开发偶尔会提一些技术实现上的细节问题,测试就只是在那听了,会议结束后,回去该干嘛干嘛,既然我们测试参与需求评审时不能产...
            3 4 4092
            分享
          •   写在前面  这篇文章译自著名测试专家James Bach的《Test Automation Snake Oil》一文,是笔者在学习和研究探索性测试时偶然发现的一篇较有意义的文章,很好地解答了我们对自动化测试的疑惑。  比如万能的自动化测试是否可以替代一切,还给我们提供了可行性很强的建议。  正如作者所说:先思考测试,再思考自动化,切莫本末倒置。  案例分析  先看几个案例。  案例1  一个产品从开发运维人员传递到下一个。  新开发人员发现产品设计文档已经过时,构建过程被破坏了。经过一个月的分析,每个人都宣称自己的设计很差,并坚持重写大部分代码。再过几个月,开发人员要么辞职,要么被重新分配...
            0 0 809
            分享
          • 读者提问:没有测试数据,自己又不会编,有什么办法可以方便快速地伪造数据 ?阿常回答:Python 库-Faker。GitHub地址:https://github.com/joke2k/faker(开源社区)Faker 是一个 Python 包,主要用来创建伪数据,使用 Faker 可以生成大批量的看起来很真实的 “ 假数据 ”。阿常碎碎念:接下来阿常给阿常演示一下 Faker 的安装和使用:1、安装 Fakerpip install Faker2、从 faker 模块中导入类from faker import Faker3、调用方法#...
            0 0 964
            分享
          •   一个项目的完成不能仅靠一个团队的付出,一项测试工作也不是单凭一己之力。那么,如何让测试工作进展的更加顺利?测试团队间工作效率又该如何提升呢?一起来看看以下几点分享:  一、分工合理,权责明确  团队是由个人组成的,团队中的成员往往经历不同、背景不同、性格有差异、水平有高低。在开始测试工作前,测试团队首先应该进行合理的分工,结合每个人的特点,充分发挥出每个人的特长。分工完成后,每个人对应的职责也就确定了,这时应同每一位团队成员进行明确说明,个人任务完成情况与日常考核挂钩,以避免推诿、相互等待的情况出现。  二、发挥主观能动性,积极沟通  测试工作是一项沟通要求比较高的工作,一般需要同项目经理...
            0 0 1157
            分享
          •   网上一搜性能测试,就会出现很多诸如性能测试、负载测试、压力测试、强度测试等一堆专有名词的解释。  但实际上我们不需要区分这么多。  那什么是性能测试?  性能测试针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,在场景条件之下执行性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满足既定值。  这个定义,其实也就是一个完整的性能测试流程了。  为什么要弄清楚?因为这些概念要抹平沟通的误解,让不同层级,不同角色的人,可以在同样的知识背景下沟通,也可以让做事情的人有清晰的逻辑思路。  一、性能测试需要有指标  指标这个东东通常在很多公司并没有明确的定...
            0 0 613
            分享
      • 51testing软件测试圈微信