【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

admin 2022年3月30日16:27:21评论216 views字数 4609阅读15分21秒阅读模式



声明:本文仅用于网络安全测试、提高网络防御能。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。




【Hacking黑白红】,一线渗透攻防实战交流公众号

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

回复“电子书”获取web渗透、CTF电子书:

回复“视频教程”获取渗透测试视频教程;  

回复“内网书籍”获取内网学习书籍;        

回复“CTF工具”获取渗透、CTF全套工具;

回复“内网渗透;获取内网渗透资料;

回复护网;获取护网学习资料 ;

回复python,获取python视频教程;

回复java,获取Java视频教程;

回复go,获取go视频教程





文章来源:奇安信攻防社区

地址:https://forum.butian.net/share/1227

作者:dota_st


0x00前言

最近好多小伙伴都在问怎么对微信小程序进行渗透,遂写篇文章抛砖引玉。

0x01环境准备

我使用的是夜神模拟器配合 burpsuite 进行抓包。夜神模拟器我使用的是6.6.1.1的版本,算是很老的版本了,内设系统为Android5.0。新的版本中安卓似乎都是7.0以上了,抓取 HTTPS 包会比较麻烦,所以我就一直没有换版本。如果有需要的朋友可以自取,后面会打包云盘在文章底部。

首先我们需要设置好抓包环境,先通过ipconfig查看我们当前 ip,这里我用的是以太网,也就是插着网线;如果是连着 WIFI,则找对应的即可

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

在 burpsuite 添加上,这里我设置端口为8888,可以按照自己需求更改

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

打开夜神模拟器,在 WLAN 选择手动代理,并设置代理地址和代理端口,和 burpsuite 对应

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

保存后,打开浏览器访问ip:port,这里的话为192.168.1.102:8888,点击CA Certificate下载证书

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

打开文件管理器,在sdcard->Download目录中可以看到下载下来的证书

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

cacert.der更名为cacert.cer,也就是将后缀改成cer,然后到手机设置->安全中,选择从 SD 卡安装

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

安装证书

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

测试一下,浏览器访问百度,burpsuite 能正常抓包说明已经设置环境成功

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

0x02反编译微信小程序代码

我们在模拟器里登录微信,然后随便选择一个微信小程序打开

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

打开文件管理器,在data/data/com.tencent.mm/MicroMsg会生成一个md5加密命名的文件夹(如果打开微信小程序过多,同时有多个文件夹不容易识别的情况,可以选择把MicroMsg文件夹所有内容删除掉,再去重新打开微信小程序,就会得到唯一一个MD5加密命名的文件夹啦)

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

在该文件夹下的appbrand/pkg目录下找到.wxapkg后缀结尾的文件,其中只有几MB大小的为刚刚打开的小程序的文件

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

点击勾选之后,来到根目录下的mnt/shared/App目录,打开右上角三个.的功能菜单选择粘贴选择项,将文件复制到该文件夹

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

这里的文件夹就是电脑共享的文件夹,点击打开电脑文件夹

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

可以找到小程序的文件

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

这里推荐有 GUI 界面的反编译工具:https://github.com/ezshine/wxapkg-convertor/releases
直接将文件鼠标拖拽到 GUI 界面即可开始反编译,在拖入文件的当前目录得到反编译生成的文件夹

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录
【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

然后就可以开始舒服的看看 js 代码啦

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

0x3反编译源码代码审计

举例某小程序审计,在登录界面爆破无关之后,直接反编译拖源码审计一下,反编译出来的源码,我们着重看 js 文件及其配置文件即可。第一想法就是先找一些接口,尝试是否有未授权之类的漏洞,下面就是找到的一处路由user/getUserInfoByUsername

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

可以看到发送数据类型为 json 格式,并且参数为usernameschool,于是尝试构造请求发送

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

成功获取系统管理员详细信息,其中包括关键的密码。获取到 md5 加密形式的密码密文后,本来还想去 cmd5 去解一下, 但是接下来注意到一个登录路由user/loginByUsernameAndPassword

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

从源码中都看得出来就是通过账号密码去登录,刚刚未授权得到的密码存储为 md5 加密形式,想来登录应该也是进行 md5 加密的形式,所以直接发送加密形式的密码即可,构造请求发送

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

验证登录成功。这类常常出现未授权漏洞的路由命名方式大抵都是

xxxByXXXId
xxxByUsername
xxxbyphone
......

审计的时候我们可以做一个规则去全局搜索源码匹配这类命名方式的路由

0x4其他类型漏洞案例

下面举例其他类型的漏洞审计案例,这里目的是为了说明小程序有哪些漏洞可以挖

信息泄露

反编译出来的源码泄露登录账号密码,这里是因为在 js 文件中写死了账号密码,只做了前端验证导致的漏洞,从下面贴的两个小程序源码中可以看到

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

在时间稍稍往前的小程序中,还经常会有泄露小程序secret的情况,简直就是把打开保险箱的密码放在你面前

未授权接口

仔细翻找 js 文件能找到不少未鉴权的 api 接口(可以着重注意配置文件,不少配置文件都会写上路由列表),例如该 api 返回大量用户敏感信息

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

测试未授权时,有一些小技巧:例如当在 GET 或者 POST 传参中有token等鉴权参数,例如

GET /api/GetUserInfo?id=xxx&token=xxxx HTTP/1.1

可以尝试将token参数的值置空或者删除token参数,往往能 bypass 鉴权,我已经遇见好多次这种情况了。举例一个案例:
该微信小程序可以注册用户,注册账号登录之后抓包,我的账号数据包如下

GET /wx/queryOrders?orderState=&serviceUid=&repairUid=6864&pageNum=1&pageSize=20&uid=6864&token=9938C366-XXXX-XXXX-XXXX-9C7709D8C9E8

当我尝试将uid参数改成其他用户时,返回权限不足,尝试将token删除

GET /wx/queryOrders?orderState=&serviceUid=&pageNum=1&pageSize=200&uid=2000

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

除此之外,测试一些参数,比如手机号,不知道该系统用户手机号时,可以试试像上面说的将其置空,往往运气好能碰上系统后端查询使用的模糊查询为空时返回所有信息,下面贴图的案例就是将手机号参数置空后,成功获取到账号详细信息

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

越权漏洞

下面案例举例一个通过 Cookie 中的参数进行鉴权的漏洞,可以通过修改NetId中的值来遍历获取用户信息。此类漏洞的挖掘在鉴权处的源码,审计时可以着重审计其验证流程

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

当时也是依靠这个漏洞获取到 VPN 账号密码,得以进入内网渗透

逻辑漏洞

使用 burpsuite 抓取管理员登录数据包,获取返回包

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

该处在login.js文件登录判断条件中,源码判断返回为 0 时登录成功,所以我们将返回包从 1 改成 0 即可登录成功。

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

还有 任意密码重置 ,该处漏洞倒也是在黑盒中无意发现,在修改密码处需要验证对应账号接收到的短信验证码。但怀着尝试的心态通过 buspsuite 抓包绕过 js 限制,随意填写验证码便可以重置任意用户密码,不细心就会很容易忽视的点

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

appid和secret的利用

当时测试数据的时候,发现添加字符%%会导致其后端报错,返回appidsecret

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

获取到的appid和secret可以到微信的官方接口去自由生成微信小程序的命脉AccessToken

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

拿到 AccessToken,相当于可以控制整个小程序了,并且 AccessToken 微信每天只能生成20次,不断请求满20次的话可以使小程序崩溃无法使用。

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

其次利用AccessToken可以执行相当多的其他操作,见微信官方文档,这里就不画蛇添足了。

工具自取链接:

链接:https://pan.baidu.com/s/1vMVvmm2n2wyr3vhzp91iqA 
提取码:jpho

0x5总结

总的来说,微信小程序的渗透我觉得最重要的还是仔细审计一下反编译得到的源码,常常会有意想不到的惊喜噢~

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录



如有侵权,请联系删除

侵权,私信比删。


渗透实战系列


【渗透实战系列】|43-某次通用型漏洞挖掘思路分享

【渗透实战系列】|42-防范诈骗,记一次帮助粉丝渗透黑入某盘诈骗的实战

【渗透实战系列】|41-记一次色*情app渗透测试

【渗透实战系列】|40-APP渗透测试步骤(环境、代理、抓包挖洞)

▶【渗透实战系列】|39-BC渗透的常见切入点(总结)

【渗透实战系列】|38-对某色情直播渗透

【渗透实战系列】|37-6年级小学生把学校的网站给搞了!

【渗透实战系列】|36-一次bc推广渗透实战

【渗透实战系列】|35-旁站信息泄露的dedecms站点渗透

【渗透实战系列】|34-如何用渗透思路分析网贷诈骗链

【渗透实战系列】|33-App渗透 ,由sql注入、绕过人脸识别、成功登录APP

【渗透实战系列】|32-FOFA寻找漏洞,绕过杀软拿下目标站

【渗透实战系列】|31-记一次对学校的渗透测试

【渗透实战系列】|30-从SQL注入渗透内网(渗透的本质就是信息搜集)

【渗透实战系列】|29-实战|对某勒索APP的Getshell

【渗透实战系列】|28-我是如何拿下BC站的服务器

【渗透实战系列】|27-对钓鱼诈骗网站的渗透测试(成功获取管理员真实IP)

【渗透实战系列】|26一记某cms审计过程(步骤详细)

【渗透实战系列】|25一次从 APP 逆向到 Getshell 的过程

【渗透实战系列】|24-针对CMS的SQL注入漏洞的代码审计思路和方法

【渗透实战系列】|23-某菠菜网站渗透实战

【渗透实战系列】|22-渗透系列之打击彩票站

【渗透实战系列】|21一次理财杀猪盘渗透测试案例

【渗透实战系列】|20-渗透直播网站

【渗透实战系列】|19-杀猪盘渗透测试

【渗透实战系列】|18-手动拿学校站点 得到上万人的信息(漏洞已提交)

【渗透实战系列】|17-巧用fofa对目标网站进行getshell

【渗透实战系列】|16-裸聊APP渗透测试

【渗透实战系列】|15-博彩网站(APP)渗透的常见切入点

【渗透实战系列】|14-对诈骗(杀猪盘)网站的渗透测试

【渗透实战系列】|13-waf绕过拿下赌博网站

【渗透实战系列】|12 -渗透实战, 被骗4000花呗背后的骗局

【渗透实战系列】|11 - 赌博站人人得而诛之

【渗透实战系列】|10 - 记某色X商城支付逻辑漏洞的白嫖(修改价格提交订单)

【渗透实战系列】|9-对境外网站开展的一次web渗透测试(非常详细,适合打战练手)

【渗透实战系列】|8-记一次渗透测试从XSS到Getshell过程(详细到无语)

【渗透实战系列】|7-记一次理财杀猪盘渗透测试案例

【渗透实战系列】|6- BC杀猪盘渗透一条龙

【渗透实战系列】|5-记一次内衣网站渗透测试

【渗透实战系列】|4-看我如何拿下BC站的服务器

【渗透实战系列】|3-一次简单的渗透

【渗透实战系列】|2-记一次后门爆破到提权实战案例

【渗透实战系列】|1一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

    

长按-识别-关注

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

Hacking黑白红

一个专注信息安全技术的学习平台

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

点分享

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

点收藏

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

点点赞

【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

点在看

原文始发于微信公众号(Hacking黑白红):【渗透实战系列】|44 | 记一次微信小程序渗透实战记录

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月30日16:27:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【渗透实战系列】|44 | 记一次微信小程序渗透实战记录http://cn-sec.com/archives/855570.html

发表评论

匿名网友 填写信息