freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

深度解析微信小程序漏洞挖掘
2025-03-05 19:49:11
所属地 贵州省

概述

今天讲讲微信小程序渗透,无论是护网、src挖掘、攻防演练,微信小程序都可以成为突破口

微信小程序和普通网页渗透相比有以下不同点:

1、抓包方式不同,不能直接进行抓包

2、不能直接进行调试,如果遇到小程序进行了加密传输,这种情况就比较棘手

3、微信小程序有自己特有的漏洞

4、某些微信小程序会进行一些限制,增加了测试难度

针对以上情况,我会分为四个章节逐一进行解答:抓包篇、逆向篇、漏洞篇、技巧篇

微信小程序渗透本质和浏览器网页渗透没啥区别,解决了这些不同点就可以像正常网页一样测试了

抓包篇

方法一:ProxyPin+Burpsuite对小程序进行抓包

proxypin是一个开源免费抓包工具,支持Windows、Mac、Android、IOS、Linux 全平台抓包。

优势:

脚本: 支持编写JavaScript脚本来处理请求或响应。

请求重写: 支持重定向,支持替换请求或响应报文,也可以根据增则修改请求或或响应。

请求屏蔽: 支持根据URL屏蔽请求,不让请求发送到服务器。

①安装证书

安装证书到本系统,选择“受信任的根证书颁发机构

1741247600_67c954705fd219bea2b26.png!small?1741247601329

1741247607_67c9547733fc014b45790.png!small?1741247608278

1741247616_67c954808ada3834b2579.png!small?1741247617856

1741247624_67c9548809a9e991ba1ee.png!small?1741247625072

1741247632_67c95490b16fe8877aad4.png!small?1741247633910

②成功抓包

1741247646_67c9549eb4d81c98755c2.png!small?1741247647766

1741247657_67c954a90bedd3c9be430.png!small?1741247658114

③将流量转发到burpsuite

1741247666_67c954b25873ff64b678a.png!small?1741247667581

1741247671_67c954b767534ccf893a5.png!small?17412476726791741247679_67c954bf8364cdfa575d5.png!small?1741247680716

④不想被抓包的域名添加到代理域名黑名单后,将不会抓相关域名的数据包,可以减少发送到burpsuite的数据包,减少burpsuite处理的数据,提升速度,尤其是开了被动扫描插件的情况下。

1741247687_67c954c7f32034c312a80.png!small?1741247688980

1741247702_67c954d6220ee9500d2dd.png!small?1741247710394

方法二:Proxifier+Burpsuite对小程序进行抓包

Proxifier是一个功能强大的网络代理工具,可以进行流量转发,可自定义灵活度很高。

①添加代理服务器

代理端口需要与burpsuite端口保持一致

1741247733_67c954f5546b227733690.png!small?1741247734546

1741247740_67c954fc945c42f667d38.png!small?1741247741966

②创建规则

1741247794_67c9553238cea4f356808.png!small?1741247795280

WeChatApp.exe;WechatBrowser.exe;WeChatAppEx.exe

1741247808_67c9554062bf6cc58d341.png!small?17412478094761741247816_67c95548a576613fecd5d.png!small?1741247817562

③成功抓包

如果配置完成后,无法抓包,将微信退出重新登陆后再进行尝试

1741247823_67c9554ff015fb82bed9e.png!small?1741247825031

逆向篇

一、微信小程序开启devtools

使用大佬写的WeChatOpenDevTools工具,即可一键开启devtools。建议使用小号,避免微信被封。不是每个微信版本都可以开启devtools,很多会开启失败,我这里为大家准备了一个可以使用的微信版本

①安装依赖库

pip3  install -r requirements.txt

②开启微信小程序中的F12(devtools)

直接运行以下命令

python main.py -x

1741247839_67c9555f3e52982779482.png!small?1741247840340

③打开要开启DevTools的小程序,即可自动hook开启DevTools(如果已经打开小程序,点击重新进入小程序也行)

python main.py -c

1741247850_67c9556acc4feea2b2e2a.png!small?1741247852474

④开启微信自带浏览器中的F12(devtools)

1741247861_67c955758a749925982fd.png!small?1741247862854

1741247867_67c9557b6cf36f586e240.png!small?1741247869097

1741247888_67c95590da6ab521467fa.png!small?1741247889977

开启3分钟,踩坑3小时,本身开启这个操作非常简单,但是有很多坑,下面讲讲遇到的坑:

1.我这里使用的python3.10,某些低版本的python,可能没有requirements文件中16.1.11版本frida的依赖库,安装时会报错,如果自己指定安装一个低版本的frida,可能会出现其他问题,如果不嫌麻烦可以逐个版本调试

2.新版本的微信直接安装老版本微信无法开启devtools,我这里采用的Uninstall Tool将新版的微信直接卸载了(删除了注册表),然后安装老版本的微信就可以了,应该是之前覆盖安装或者卸载有残留

3.开启开启微信自带浏览器中的F12时,如果提示"请退出所有微信实例后再执行该命令",需要先退出微信

二、微信小程序反编译

①使用 wxapkg.exe scan 命令来扫描所有小程序。需要联网
获取小程序的名称、路径、wxid(用于后续解密)等信息

1741247910_67c955a6a788e3df80a2c.png!small?1741247912105

②使用键盘上下键选中想要处理的小程序,选中以后,点击enter键即可执行解密+解包

1741247918_67c955ae5fedbc86c94f5.png!small?1741247919612

③如果这里没有看到你要反编译的小程序,可以将要测试的程序添加到自己的小程序,然后再重新进入查看。添加以后,进入小程序查看,如果还没有发现要测试的小程序,点击重新进入小程序然后再查看

④反编译成功

1741247928_67c955b821937e03f99e4.png!small?1741247929365

⑤反编译成功后的文件

1741247939_67c955c372c70d0b93cf7.png!small?1741247940409

漏洞篇

一、敏感信息泄露

上面已经对小程序进行了反编译,可以查看源码中是否有acesskey、身份证、手机号、密码等敏感信息泄露,但是手工逐个查找的话会比较麻烦,这里准备了一个脚本(脚本只能说能用,谈不上规范),这个脚本可以从js文件中获取这些敏感信息。

①首先筛选出反编译后的js文件

我这里使用的everything进行快速筛选,首先打开全字匹配

1741247953_67c955d1c700fcd03fa35.png!small?1741247954961

然后使用查询语句筛选出js文件

path:反编译后的目录 .js

1741247965_67c955dd4eadcefb87bc9.png!small?1741247966647

②将筛选出的js文件复制出来放到一个目录中,使用脚本进行敏感信息查询

python secertinfo.py js文件所在目录

1741247977_67c955e9696d6e10a56d7.png!small?1741247978823

1741247992_67c955f895d068c4077b9.png!small?1741247993818

③获取到的手机号、密码、ip等可用于后续渗透测试。

二、任意用户登录

微信小程序如果采用了开发者后台校验与解密开放数据,可能存在任意用户登录漏洞。如果数据包中泄露了sessionkey和iv,那我们可以通过AppletPentester插件对数据包进行加解密,可以将用户手机号修改为任意手机号,也可以修改其他信息,从而造成任意用户登录。

①如何快速发现数据包中的sessionKey,从而进行后续的判断

这里使用burpsuite的hae插件规则进行匹配

(sessionKey)

1741248010_67c9560a6019c07d652c9.png!small?1741248011693

②获取到sessionKey和iv以后如何对数据包进行加解密

这里使用burpsuite的AppletPentester插件进行加解密

1741248018_67c95612bd48c030549d1.png!small?1741248019694

技巧篇

测试微信小程序可能会遇到很多奇奇怪怪的问题,这里做一下记录,希望对师傅们有所帮助,当然你们遇不到更好。

一、解决功能点无法加载的问题

有些小程序在手机端打开正常,但是电脑端打开一直显示在加载,或者某些功能点点击没反应

我们可以在手机上点击要测试的功能点,然后复制链接,再从电脑端进去,就可以解决这个问题(注意是复制链接,分享小程序不可以)

1741248035_67c9562357bd932829287.png!small?1741248036518

链接是这种形式的

#小程序://中国电信App/8zsyCcxJscGz0QA

二、微信小程序只能手机打开

直接使用电脑打开微信小程序时提醒只能使用手机打开,我们可以先在手机端打开该小程序,然后这时电脑端就会显示手机刚才打开过的小程序,从这里打开即可绕过。

1741248048_67c95630da7f3aa45a528.png!small?1741248049898

三、如何更便捷的进行真机测试

有时候测试越权漏洞可能需要两个微信进行测试,你可以选择电脑和模拟器,但是我习惯性电脑和真机进行测试,真机测试存在一个问题就是一边操作真机,一边看电脑,两个屏幕来回看不是很方便,我一般是用手机投屏到电脑,这样更方便测试。

我使用的投屏工具是QtScrcpy手机投屏,先将手机用usb连接电脑,读取到手机后,选择一键wifi连接(我一般喜欢用这个连接模式),连接上以后,拔掉usb将手机放一边,就可以只在电脑上进行真机测试了。这个软件对于很多做了真机检测的app来说,挺好用的。

1741248060_67c9563c9fc50c1e13f99.png!small?1741248061749

相关工具

所有工具打包:

https://pan.quark.cn/s/d4d10bb0d3ee

ProxyPin:

https://github.com/wanghongenpin/network_proxy_flutter

微信:

https://github.com/tom-snow/wechat-windows-versions/releases/download/v3.9.10.27/WeChatSetup-3.9.10.27.exe

WeChatOpenDevTools:

https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python
# 渗透测试 # 黑客 # 网络安全 # web安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者