当前位置: 首页 > news >正文

小迪安全v2023学习笔记(九十讲)—— 小程序篇反编译外在主包分包配置泄露算法逆向未授权

文章目录

  • 前记
  • APP攻防——第九十天
    • 小程序篇&反编译&外在抓包&主包分包&配置泄露&算法逆向&未授权
      • 小程序抓包 - 全局代理&进程转发
      • 小程序逆向 - 反编译&主包&分包&调试
        • 介绍
        • 如何获取小程序编译文件
        • 小程序反编译工具
          • wxappUnpacker
          • 小锦哥小工具
          • unveilr
        • 如何查看小程序源码
      • 小程序逆向 - 抓包反编译安全挖掘案例
        • EDUSRC - 小程序抓包未授权逻辑安全
        • EDUSRC - 小程序反编译接口信息泄露
        • 抓包逆向 - 小程序反编译加解密算法
        • 抓包测试 - 小程序抓包测试参数漏洞
        • 配置泄露 - 小程序反编译获取云OSS
        • 总结

前记

  • 八十九天的内容有点露骨,而且我也没有找到对应的软件,所以直接跳过了
  • 今天是学习小迪安全的第九十天,本节课是APP攻防的最后一讲,但其实也不是关于APP的知识,主要是小程序的反编译以及漏洞挖掘思路
  • 其实感觉也是比较水的一节课,因为之前也讲过,算是多了解一些知识吧
  • 本节课所用到的资源已放至下方链接,需要自取:
    • https://pan.baidu.com/s/177Z4COj6RjXGIXCROELpkQ
    • 提取码:ccse

APP攻防——第九十天

小程序篇&反编译&外在抓包&主包分包&配置泄露&算法逆向&未授权

在这里插入图片描述

小程序抓包 - 全局代理&进程转发

  • 对于小程序抓包,不管是在真机还是在模拟器中安卓系统上抓包,都可能存在以下问题:

    • 安卓系统 7.0 以下 版本,不管微信任意版本,都会信任系统提供的证书
    • 安卓系统 7.0 以上 版本,微信 7.0 以下 版本,微信会信任系统提供的证书
    • 安卓系统 7.0 以上 版本,微信 7.0 以上 版本,微信只信任它自己配置的证书列表
  • 而对应的解决办法就是:

    • 将证书安装到系统证书中(需 root)
    • 使用苹果手机(苹果手机不受此影响)
    • 采用安卓系统低于 7.0 的模拟器
  • 所以可以看到使用真机或者模拟器进行小程序抓包,条件比较难满足,那我们更多的就是用PC端的微信进行测试了

  • 如何抓包呢?其实前面的课程也讲过了,主要就两种方式:

    1. 系统代理:使用电脑的系统代理服务器,将他导向BP,但是这个方式有个缺点就是它会捕获所有的数据包,需要你自己排查
      在这里插入图片描述

    2. 科来+Proxifire+BurpSuite:这个就是先通过科来去看某个进程的具体名字,然后配置Proxifire的抓包规则,再用BP抓包即可
      在这里插入图片描述

    • 这里WeChat.exe表示微信聊天程序WechatBrowser.exe表示微信浏览器(公众号文章等等);WeChatAppEx.exe表示微信小程序
    • 可以一起抓,也可以根据情况分开抓包
  • 那我们一般还是使用第二种方式来对小程序进行抓包,因为它比较精确一点

小程序逆向 - 反编译&主包&分包&调试

介绍
  • 然后我们找微信小程序,主要的目的有两个
    1. 从小程序中发现更多的资产:域名、API接口、各种敏感信息(AK、SK、电话、邮箱等等)
    2. 对小程序进行测试:就像测试网站一样,测试小程序的漏洞
  • 那要达到这两个目的,我们可以从两个方面入手
    1. F12前端调试:没错,小程序也是可以f12调试的,但是有一定的风险,参考文章如微信小程序强制开启F12开发者调试工具_微信小程序 f12-CSDN博客
    2. 反编译查看源码:从后端入手,尝试反编译查看小程序的源码,从中分析一些有用的信息
  • 而我们本节课的内容就是尝试对小程序进行反编译,然后分析它的结构以及利用手法
如何获取小程序编译文件
  • 这里既然要反编译小程序,我们就得需要知道去反编译哪个文件,那如何找到这个文件呢

  • 按照如下图的指示找到文件存储位置:
    在这里插入图片描述

  • emmm,这里经过测试,如果是新版微信(4.1左右版本),小程序文件已经被缓存到C:\Users\user\AppData\Roaming\Tencent\xwechat\radium\Applet\packages下面去了,这里根据自己实际情况找就好了

  • 然后如果不是新版微信,就按照上图所示的位置找就行了

  • 文件夹类似下面这个样子,然后打开是这样子的:
    在这里插入图片描述
    在这里插入图片描述

  • 这里会出现两种情况,一种是只有__APP__.wxapkg文件,一种是有很多个.wxapkg文件

  • 这里就涉及到了一个主包和分包的问题:

    • 前者就只有一个核心文件,适合于小程序架构不怎么复杂的时候使用
    • 后者可能会有很多个文件,适合于一些架构比较复杂的小程序,因此在反编译这种小程序的时候,需要将所有文件都点出来,然后反编译
小程序反编译工具
  • 之前推荐过一些反编译工具,但是有的不怎么好用,有的需要money,所以这里小迪介绍了几款免费且还比较好用的反编译工具
wxappUnpacker
  • 下载地址:YangChengTeam/wxappUnpacker: 微信小程序反编译工具
  • 这个工具需要nodejs环境,这个就自己下去找教程装了,然后使用如下命令安装该工具:
npm install

在这里插入图片描述

  • 安装成功之后,我们需要先对文件进行解密(如果加密的话),然后再反编译,解包软件为UnpackMiniApp:
    在这里插入图片描述

  • 如果有加密的话,他会将解密的结果放到wxpack目录下,然后我们使用这个反编译工具进行反编译:

node wuWxapkg.js "C:\Users\user\AppData\Roaming\Tencent\xwechat\radium\Applet\packages\xxx\xxx\__APP__.wxapkg"

在这里插入图片描述

  • 反编译之后会得到这样一个文件,怎么打开之后再说
小锦哥小工具
  • 下载地址:小锦哥小程序工具

  • 这个工具和之前那个小程序多功能助手差不多,只不过这个是免费版,然后这个工具已经自带了包解密工具,直接用即可:
    在这里插入图片描述
    在这里插入图片描述

  • 然后在该文件夹下就可以看到反编译之后的文件了:
    在这里插入图片描述

unveilr
  • 虽然说是已经删库了,但是还是可以用小迪提供的版本,下载下来之后运行如下命令即可:
.\unveilr.exe 文件路径
  • 这里可以写成文件夹路径,他会自动反编译当前文件夹下所有的文件,所以这个工具比较适合反编译分包架构的小程序
如何查看小程序源码
  • 当我们用上面的各种工具拿到小程序的源码之后,就可以对其进行分析了,我们用到的分析工具是小程序开发者助手

  • 直接打开软件,选择导入反编译获得的文件夹,然后填入相关信息即可:
    在这里插入图片描述
    在这里插入图片描述

  • 然后小程序的目录结构介绍如下所示:
    在这里插入图片描述

  • 所以在找一些信息的时候要注意针对性的去某个文件/文件夹下面搜索

小程序逆向 - 抓包反编译安全挖掘案例

  • 然后本节课小迪向我们展示了他/其他人挖到的一些小程序漏洞,我们可以简单看看,主要是为了让我们认识到小程序有哪些测法,然后如何去增加攻击面
EDUSRC - 小程序抓包未授权逻辑安全
  • 先搜索到目标资产小程序,注册并登录:
    在这里插入图片描述

  • 然后来到个人中心,这里点击报名信息并抓包:
    在这里插入图片描述

  • 然后看到请求包中包含JWT的数据,返回包中可以看到个人的基本信息:
    在这里插入图片描述

  • 于是在平台解码后,尝试修改其中的jti编号数据:
    在这里插入图片描述

  • 这里由于JWT验证逻辑有缺陷,他的签名部分可能没有起到效果,因此能够直接修改遍历任意用户信息,造成越权:
    在这里插入图片描述
    在这里插入图片描述

EDUSRC - 小程序反编译接口信息泄露
  • 还是信息收集发现存在某个小程序资产
    在这里插入图片描述

  • 对其进行反编译之后导入到开发者工具进行调试分析:
    在这里插入图片描述

  • 从里面分析找到一处提交信息用户报修,可获取大量用户的openid
    在这里插入图片描述
    在这里插入图片描述

  • 然后继续分析源码发现,使用获取到的openid在另一处接口可以获取用户的详细信息:
    在这里插入图片描述
    在这里插入图片描述

  • 之后又可以利用获取到的studentID和学生姓名对其水卡进行绑定,绑定后可对水卡进行充值、挂失等操作:
    在这里插入图片描述

抓包逆向 - 小程序反编译加解密算法
  • 找到资产小程序,对其进行反编译:
    在这里插入图片描述

  • 通过抓包对比搜索关键词找到疑似加解密代码块:
    在这里插入图片描述

  • 然后开始分析加密代码的源头,猜测解密的过程在a方法里面,跟进:
    在这里插入图片描述

  • 调用的是d对象的fetch方法,继续跟进:
    在这里插入图片描述

  • 最后调用的是request方法,大致看一下:
    在这里插入图片描述

  • 于是我们找到加密配置代码,尝试加密解密测试:
    在这里插入图片描述

  • 这里提示是AES加密,ECB模式,然后填充方式是PKCS7,找个在线网站测试一下:
    在这里插入图片描述

  • 成功解密,于是我们就可以进一步去测试我们的payload,看看是否存在漏洞了

抓包测试 - 小程序抓包测试参数漏洞
  • 还是找到小程序资产:
    在这里插入图片描述

  • 然后抓包点点点,发现某个页面存在goods_name参数,并且没有任何加密,那我们就可以直接测试payload,发现可能存在SQL注入:
    在这里插入图片描述

  • 将数据包丢进Sqlmap中跑,尝试获取账号密码:
    在这里插入图片描述
    在这里插入图片描述

  • 得到这个密码后,发现他是加密的,我们尝试去反编译小程序获取解密算法登录后台,这里并没有展示如何获取解密过程的,只是说有这种思路:
    在这里插入图片描述

配置泄露 - 小程序反编译获取云OSS
  • 获取小程序资产,尝试反编译,然后导入开发者工具,直接搜索一些敏感信息,比如ossAccessKeyid
    在这里插入图片描述

  • 很幸运的是这里正好泄露了AK、SK,于是我们就直接利用OSS工具进行连接:
    在这里插入图片描述

  • 发现泄露大量信息:
    在这里插入图片描述

总结
  • 这五个案例是关于为微信小程序的五个不同的测试手段,当然还有更多的测试思路,这个就靠自己去发现了
  • 总体来说,其实就和常规的渗透测试差不多,关键在于遇到了某些关键点能不能想到对应的测试思路
http://www.dtcms.com/a/415241.html

相关文章:

  • 机器学习模型中异常样本、特征的三种常见分类与鉴别方法
  • 有口碑的常州网站建设建设网银怎么提高转账限额
  • 湖南响应式网站哪里有58同城怎么发布信息
  • 《前端开发中常用的快捷键大全》
  • 跳舞游戏做的广告视频网站平度建设局网站
  • 众筹网站建设公司金蝶官网首页
  • 智能汽车安全基石:通过CAS密钥管理系统实现全周期密钥管理与固件签名
  • 基于Python CNN推荐的电影资讯App软件的设计与实现
  • 如何识别网站的建站程序做网站的客户多吗
  • 找人做网站推广wordpress二次开发手册chm
  • 如何降低重复率?卷卷降AI
  • 建网站哪家好新闻wordpress 修改404
  • 基于微信小程序的智能在线预约挂号系统【2026最新】
  • 网站域名管理怎么登陆深圳服务网站建设
  • 前端开发中的事件冒泡
  • 《Rust 程序设计语言》第二十一章:期末项目:构建多线程 Web 服务器
  • 作品 上海高端网站设计wordpress logo 编辑
  • day9.27
  • 做动画人设有哪些网站可以借鉴谷歌chrome浏览器下载
  • c++ 之多态虚函数表
  • 全屏网站 图片优化网站主机免费
  • 谷歌广告联盟网站同一个网站绑定多个域名
  • Java 大视界 -- Java 大数据机器学习模型在金融产品创新与客户需求匹配中的实战应用(417)
  • 美团网站是用什么做的网站开发企业开发
  • C语言风格哈希表vs C++风格哈希表的区别
  • 做数据分析网站做网站与数据库的关系
  • 六节tslib移植 、Qt移植到嵌入式linux
  • 做动漫图片的网站seo推广费用
  • 设计模式与原则精要
  • asp网站怎么做301定向系统商店