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

文章目录

前记

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

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
shell 复制代码
npm install
  • 安装成功之后,我们需要先对文件进行解密(如果加密的话),然后再反编译,解包软件为UnpackMiniApp

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

shell 复制代码
node wuWxapkg.js "C:\Users\user\AppData\Roaming\Tencent\xwechat\radium\Applet\packages\xxx\xxx\__APP__.wxapkg"
  • 反编译之后会得到这样一个文件,怎么打开之后再说
小锦哥小工具
  • 下载地址:小锦哥小程序工具

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

  • 然后在该文件夹下就可以看到反编译之后的文件了:

unveilr
  • 虽然说是已经删库了,但是还是可以用小迪提供的版本,下载下来之后运行如下命令即可:
shell 复制代码
.\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工具进行连接:

  • 发现泄露大量信息:

总结
  • 这五个案例是关于为微信小程序的五个不同的测试手段,当然还有更多的测试思路,这个就靠自己去发现了
  • 总体来说,其实就和常规的渗透测试差不多,关键在于遇到了某些关键点能不能想到对应的测试思路
相关推荐
用户9623779544810 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机14 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机14 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户9623779544815 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star15 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544819 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher2 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行5 天前
网络安全总结
安全·web安全
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
red1giant_star5 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全