0x1 抓包
说明:至于如何用Burp抓手机数据包,请移步https://laucyun.com/525396b1a6c32ca2b39675cde88f4fba.html。
提示:如下代码中关键信息使用了 ...
隐去处理。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
url = 'https://{ip}:{port}/foodBookingPlan/today'
headers = {
'ks-branchPark': 'ZH_001',
'Accept': '*/*',
'ks-partner': 'KS...',
'Accept-Language': 'zh-cn',
'ks-sign': 'f1e2e2c400fce6d97efaba7a85eb03d7',
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/json;charset=UTF-8',
'ks-email': 'ks...',
'ks-apiType': 'openapi',
'ks-timestamp': '1573189775000',
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.8(0x17000820) NetType/WIFI Language/zh_CN',
'Referer': 'https://www.laucyun.com',
'Cookie': 'SESSION=e2614...',
'Connection': 'close',
}
try:
r = requests.get(url, headers=headers)
if r.status_code != requests.codes.ok:
print('错误: 服务不可达')
else:
rd = r.json()
print(rd)
except Exception as e:
print('错误:', str(e))
clock is not available
,从请求头中发现一个奇怪的字段ks-sign
,由此可以猜测它应该是一个签名。0x2 反编译微信小程序
1 环境
-
1) Node.js 反编译脚本是基于Node.js编写,如果没有安装需要先安装。
Node.js官网:https://nodejs.org/。
-
2) 反编译的脚本 脚本地址:https://git.laucyun.com/security/wxappUnpacker。
-
3) 安卓模拟器 用于获取微信小程序包,推荐使用夜神模拟器。
下载地址:https://www.yeshen.com/。 -
4) 微信开发者工具 为了简单和高效地查看微信小程序包,推荐使用微信开发者工具。
下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html。
2 安装反编译工具
git clone
将wxappUnpacker
克隆到本地,命令如下:git clone https://git.laucyun.com/security/wxappUnpacker.git
npm install
# 或使用淘宝NPM镜像
cnpm install
推荐使用淘宝 NPM 镜像,它使用 cnpm
(gzip 压缩支持) 命令行工具代替默认的npm
:npm install -g cnpm --registry=https://registry.npm.taobao.org
3 提取微信小程序包
根目录(非存储) > data > data > com.tencent.mm > MicroMsg > 3e148db98e4097593ffcc4aabfbe0e57(诸如此类文件夹)> appBrand > pkg
,即可看到后缀名为.wxapkg
的文件:-
_-842756125_75.wxapkg
-
_1123949441_320.wxapkg
tar.gz
,然后拷贝出来即可。提示:如果 MicroMsg
中32位hash类文件夹多的话,可通过文件夹时间进行筛选。
4 反编译
wxappUnpacker
,建一个名为pkg
的文件夹,将刚才提取到.wxapkg
文件拷贝到此处。_-842756125_75.wxapkg
进行反编译,命令如下:node wuWxapkg.js ./pkg/_-842756125_75.wxapkg
SyntaxError
错误_1123949441_320.wxapkg
进行反编译,命令如下:node wuWxapkg.js ./pkg/_1123949441_320.wxapkg
_1123949441_320.wxapkg
_1123949441_320.wxapkg
是微信小程序的官方组件包。5 审计源码
AppID
的话,请选择游客模式。app-service.js
中找到签名过程,如下图所示:-
字符串 ks...RK
-
长度为13位的时间戳 -
密钥
MD5(ks...RK+时间戳+h8cmc18oupezmopm)
。0x3 提交订单
-
通过阅读小程序源码 -
通过抓提交订单时数据包
/foodBookingPlan/today
接口下面找到下单方法,如下图所示:43391
行找到它调用了下单方法,订单数据如下图所示:{'foodBookingPlanId': 185, 'items': [{'planItemId': '1004'}, {'planItemId': '1009'}]}
。提示:脚本代码中关键信息已用 ...
隐去处理。
0x4 工具演示
python3 kswm.py -h
获取工具帮助信息,如下图所示:提示:请使用Python 3运行本工具。
python3 kswm.py -c SESSION=e2.. -l
查看商品清单,如下图所示:提示:Cookie需通过抓包软件提取。至于如何提取,请移步https://laucyun.com/525396b1a6c32ca2b39675cde88f4fba.html。
python3 kswm.py -c SESSION=e2.. -b 1014,1019
即可购买,如下图所示:提示:如果需购买多样商品的话,请以 ,
分隔。
0x5 参考
-
https://github.com/qwerty472123/wxappUnpacker/tree/master -
https://segmentfault.com/a/1190000018592740
本文始发于微信公众号(渗透云笔记):记一次食堂外卖自动下单工具的编写过程
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论