❝
本文分为三部分,第一部分涵盖了微信小程序渗透前置知识,第二部分讲述小程序渗透常用方法,第三部分讲述小程序实践挖掘技巧,点击**「阅读原文」**体验更佳。
(本文首发博客:https://sanshiok.com/archive/14.html)
❞
0x01 前置知识
为什么要使用小程序?
小程序相较于APP来说:
-
对用户具有:无需安装,多终端适配,占用内存小等优点
-
对创作者有:适合初创团队,试错成本低,需要较少时间和资金投入优点
0x02 架构分析
整个小程序框架系统分为两部分:「逻辑层」(App Service)和 「视图层」(View)。小程序提供了自己的视图层描述语言 WXML
和 WXSS
,以及基于JavaScript
的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑。
视图层由 WXML
与 WXSS
编写,由组件来进行展示。将逻辑层的数据反映成视图,同时将视图层的事件发送给逻辑层。
逻辑层主要的组成部分是由:app.js、app.json、js 文件、json****配置文件等组成,因此测试过程中主要分析的对象就是这一些。
0x03 渗透常用方法
小程序抓包
先介绍一种常规的方式,这里讲的是windows微信用户,通过Proxifier
(文中所有工具均在文末)把微信小程序的流量转发到Burpsuite(要先确定Burpsuite是可以抓取到正常网页的数据包的)
Proxifier配置
设置代理服务器
要与Burpsuite设置的代理相同
设置代理规则
WeChat.exe;WeChatAppEx.exe;WeChatPlayer.exe;WechatBrowser.exe;WeChatAppEx*.exe
上述配置不止可以抓取小程序的数据包,还可以抓微信内置游览器的数据包
源码解密及提取
定位
先确定源码位置,点击 「设置——文件管理」
点击进入Applet
文件夹,以wx
开头的即为小程序的文件夹
该文件下加载过所有的小程序的文件夹,可以把该文件夹下的wx
开头的文件删除后,再重新加载小程序,其中__APP__.wxapkg
为小程序加密后的文件
解密
用UnpackMiniApp
工具选择需要解密的程序包(这里一定要用原目录选择),解密完成后会在工具wxpack
目录下生成解密完成后的文件:
反编译
通过反编译获取源码,这里工具选择很多,我使用的是CrackMinApp,把解密后的文件放到该工具wxapkg
目录下,即点即用:
解密后,可以用**「小程序开发工具」**打开,用这个打开的很大一部分的原因是想将反编译的源码进行运行调试,但是经过我的测试反编译后源码存在缺失,能够能够运行的是比较少的,所以用什么工具打开并不重要,只要能够进行全局搜索,查看即可。
如果不能运行,遇到算法分析如果只靠静态分析就比较头痛,大佬除外所以要推荐下如下这种方法。
小程序调试模式
原理
通俗点讲就是将小程序的窗口当做一个游览器,F12调用出开发者工具进行动态调试。注意此方法可能会有封号风险,请用小号测试!!!。实现方式通过对某信偏移地址进行hook开启调试模式,所以不同的版本的偏移地址不同,目前支持的版本如下:
Windows 微信版本 | 小程序版本 | 是否为最新版 |
---|---|---|
3.9.9.43_x64 | 8555_x64 | ✅ |
3.9.8.25_x64 | 8531_x64 | ❌ |
3.9.8.25_x64 | 8529_x64 | ❌ |
3.9.8.25_x64 | 8519_x64 | ❌ |
3.9.8.25_x64 | 8501_x64 | ❌ |
3.9.8.25_x64 | 8461_x64 | ❌ |
3.9.8.25_x64 | 8447_x64 | ❌ |
如果版本更新了,偏移地址是会变的,师傅们可以关注下@zhiyuan
师傅的WeChatOpenDevTools项目,学习下如何找到不同版本的偏移地址,这里就不做过多的介绍了。
注意:如果小程序禁用了调试模式,此方法不适用
食用方法
下载项目WeChatOpenDevTools-Python(@zhiyuan
和@Javeley
师傅提供的方案和工具),安装依赖:
pip3 install -r requirements.txt
开启小程序F12运行✅
python main.py -x
开启微信内置浏览器F12抓包
python main.py -c
0x04 实战部分
案例1:敏感信息
这部分通常见很多小程序文章渗透讲解的都是泄露AppSecret(ak/sk),但是在2022年6月之后的小程序开发工具支持检测这种敏感信息,所以这种漏洞的发现和利用会越来越少
如果遇到这种云key泄露,直接利用工具即可:
除此之外,可以进行一些信息收集https://
,http://
,phone
,token
,key
,也可以写个脚本用正则匹配下接口,进行数据遍历后可能会有意想不到的效果。
案例2:弱口令
在测试多个小程序时,会发现抓到的xxxxx.com
域名,在游览器中是可以直接打开的,如果在测试小程序时没有进展,可以尝试从这个方向进行突破:
这个案例是在众测中遇到,发现图形验证码存在复用情况,且忘记密码处存在用户枚举,成功枚举出测试手机号13122223333
,继续爆破密码成功进入后台:
案例3:未授权访问
某众测案例,开局一个小程序,抓到的域名为:https://1.com
:
登录口一顿抓包改包,反复尝试对抗,无果:
域名直接游览器访问,一片空白,无论怎么拼接获取到的路径,还是一片空白,但是发现虽然数据没有加载,但是网站title
是已经加载了的:
这时候直接通过又在Burpsuite跑了一遍新获取的路径,G了,还是没有个能够正常访问的:
继续摸索分析数据包,在响应头Access-Control-Allow-Origin
(允许跨域访问的域名)发现了一个域名https://2.com
:
直接访问,被waf提示405
,但是发现下面写着7x24
客服,随手加下面的QQ:
秒通过,尝试着问了下,没想到真的回我了!!!后面回复给我的意思就是:这个网站设置了安全策略,只能通过xx省访问:
修改xx省内IP,重复上述步骤,一发入魂https://2.com/H5/#/
,发现一个测试用例页面,图片太过敏感我就不放了,可以操作和查看该系统的所有数据
小技巧:发现某个未授权接口,存在任意文件下载,这个时候可分两个漏洞交,拿两个Rank分:
0x05 完结
还有其他小程序案例,和web渗透测试流程无异,就不做过多赘述啦。后面在渗透过程中再遇到有趣的案例再与大家分享,文中涉及工具请关注公众号回复:0311 获取。
参考资料:https://forum.butian.net/share/2570
`黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享