《羊了个羊》渗透测试工程师如何通关
2022-9-17 16:5:43 Author: 网络安全透视镜(查看原文) 阅读量:147 收藏

目录:  前言  通关原理  测试环境  踩坑指南  总结 全文共计2500字左右,预计阅读需要7分钟

前言

这段时间微信小程序羊了个羊很火,前两天原本想发一下通关的方法的,但觉得抓包实在太复杂,折腾了两天想找出简便的方法,一直未成功。就按照最复杂的方法来吧。

通关原理

前面微信授权登录的步骤就不多讲了,先看看正常游戏流程

作者在开发程序时存在以下两个问题,

一、是没有校验前后两关的请求逻辑,导致随意修改地图参数,即可改变地图。

二、是没有校验通关后成功的数据包逻辑是否正确,导致重放攻击,只要不停发送通关成功数据包,即可刷新通关成功次数。

三、没有进行有效的会话管理,玩游戏时候大家也可以发现,程序没有退出重新登录。第一次微信授权登录后,服务端会保存会话登录凭证参数 T, 这个T也是能够进行重放攻击的关键。经过测试,这个登录凭证可以长时间不会失效,即使退出微信,此登录凭证也不会失效。

通过上述问题分析,我们可以抓包,进行重放攻击

小程序发送两个数据包到服务器,同时请求第一关和第二关的地图;第一关地图map_id=80001, 第二关地图map_id = 900+当日日期,比如今天17号,map_id就是90017。

  1. 抓获上述两个请求地图数据包,第一关数据包放过,第二个数据将map_id 修改为80001,这样第二关返回的地图就和第一关一样,很轻松就通过了。

  2. 第二关通关后,等几秒,抓取通关成功后的数据包,然后使用burp进行重放攻击刷新通关次数。登录成功后就获取了登录凭证参数 T , 这个时候可以直接写两行代码,不停的刷,可以不用工具重放攻击。

通关很简单,此方法难点在于抓包。新版本微信抓不到包,环境配置相对复杂。由于本地物理机应用太多,为了方便使用虚拟机,新装win10系统。

测试环境

Windows 10Java 15.01BurpSuite 2022..3.1Charles 4.6Proxifier

百度云盘链接:

链接:https://pan.baidu.com/s/1kP-OvvVEbk7D17bqGdKVAw

提取码:3fp7

也可以用我配好的win10 直接VMware导入即可

BurpSuite 安装配置

1

1.1 点击BurpSuiteLoader启动Burp。有些人这一步可能无法直接启动,需要破解。具体破解步骤,不在演示,可以网上搜索一下。

1.2 启动后,进入Proxy -->Option 设置本地监听端口。默认是127.0.0.1  8080端口

1.3 监听端口设置完成后,安装burpsuite证书。

打开谷歌浏览器,输入127.0.0.1:8080 下载证书-->在设置里面搜索证书-->

然后一直点击下一步安装即可。

配置Charles

2

2.1  启动Charles , 注意:Charles启动慢,要等10秒左右

2.2 点击Help --->SSL Proxying ---> Install Charles Root Certificate  安装根证书

点击安装证书

最后点击完成即可。

2.3 设置代理。点击Proxy --> Proxy Settings  安装默认配置即可,端口默认8888 这些不用更改。

配置Proxifier

3

3.1 安装proxifier , 直接双击安装,按照默认设置安装即可。

3.2 安装完成后,设置代理服务器

添加两个代理服务器,地址都是127.0.0.1 端口分别是BurpSuite 和Charles 的代理端口 8080和8888 .

3.3 配置代理规则

点击配置文件--> 代理规则-->添加规则,分别将Charles 和Burp 端口添加进去。

其中wechatappex.exe 这个程序就是羊了个羊电脑端小程序的名字,微信打开小程序,通过任务管理器,右击查看进程对应的程序。

这样设置就是让wechatappex小程序流量走 Charles这个工具,然后从Charles将流量转发给BurpSuite

设置完成后Proxifier就开始抓取小程序的数据包了。

抓包分析

由于数据包很多,要抓包小程序的数据包建议先关闭抓包,BurpSuite 关闭抓包如下图所示:

开始抓的包为微信的数据包,数据很多。要注意观察。建议先登录微信,然后配置代理工具,代理工具配置好后,开启Burp监听状态,在打开小程序。

授权登录

最关键的一步,抓起地图包。参数为map_id=900xx 的参数全部改成80001,让第二关返回的地图和第一关一样。请求参数里面的 T 可以保存下来,这个登录凭证一直有效,可以直接写个脚本,利用这个登录凭证重放攻击,刷通关次数。

当修改参数后第一关地图不变,可以先放过拦截的其他数据包,或者直接停止抓包。

修改后第二关,如下图所示,还是和第一关一样。

在第二关通关前,一定要开启抓包,通关后会拦截到通关成功的数据包,如下图所示。请求参数不解释了,一眼就能看出来,重放攻击时也不用更改的。

然后右击,将此数据包发送到Intruder模块

清除变量

设置空Payload, 以及重放次数

以上就完成了重放攻击。抓到登录凭证参数T 后,也可以直接写个脚本跑。每次打开抓包重放攻击挺麻烦的,保存登录凭证,直接用脚本,随时随地刷。Python脚本源码及整个虚拟机环境,放到百度云盘里面。

踩坑指南

1、配置环境后由于代理工具拦截流量,所以微信可能出现断网,无法刷新消息等现象。需要将Burp拦截的包放掉。

2、小程序打不开情况:需要检查Charles 是否退出了,这个软件容易闪退。然后将Burp拦截关掉,重新进入小程序。

3、抓不到小程序请求包:小程序登录授权时候关掉拦截,登录成功后,进入羊群时再开启拦截。

4、小程序一直无法进入:这种情况是我遇到最多的,我觉得有两个原因,一是代理拦截了,而是程序服务器本身有问题,最近都在刷这个,流量很大。因为小程序一直再发地图请求包,burp上一直点forward,放过数据包多尝试几次就好了,注意将map_id = 900xx的参数改一下就好了。如果还不行,就需要退出小程序重新进来抓包了。

环境配置视频如下,由于录视频时候已经通关了,所以没法录抓包的环节

总结

小程序安全性可以说是很糟糕,以上是最复杂的一种方法。程序对发过来的数据包,缺少基本的会话管理,访问控制。除了上述方法,还有其他方法。比如:抓取第二关失败的包,将参数rank_state=2 改成1就好了,还有将返回排行榜返回参数daily_count包,本地文件修改等。由于这个游戏很火,没有进一步做测试,奉劝大家别玩的过火呀!!!

使用其他方法完全可以Burp抓取本地手机数据包,更改即可。上述方法对服务器压力很大的,朋友圈那些挂逼,刷出个天文数字。这两天我登录这个小程序有时候很卡,数据发出去了半天收不到回包。

往期推荐

【国家队牛逼】看不见就要挨打!!西北工业大学网络攻击追踪溯源

可能这才是高级渗透吧

Nginx "0day" 远程命令执行漏洞影响范围可能比你想得更大

【如何盗取QQ】近期大量QQ被盗分析


文章来源: http://mp.weixin.qq.com/s?__biz=MzIxMTg1ODAwNw==&mid=2247492478&idx=1&sn=a58b844791cd2d9c45426ad5beae25d4&chksm=974c4446a03bcd5077c010da6afbeebb4ce3b6fa0039ebea49c428be71e69ad403bee66af374#rd
如有侵权请联系:admin#unsafe.sh