0x01 前言
在进行小程序逻辑漏洞测试时,常常会遇到sign签名标识的问题。比如不知道sign的生成方式,仅修改参数值是无法改变sign值的,漏洞测试无法继续进行。此时需要绕过小程序的sign标识,然后进一步发现新的漏洞。
现在只对常读和星标的公众号才展示大图推送,建议大家把渗透安全HackTwo“设为星标”,否则可能就看不到了啦!
末尾可领取挖洞资料文件
0x03 漏洞发现
获取代码包:
PC端:默认存储位置:(就是我们要找的加密包)
%USERPROFILE%DocumentsWeChat Filesid,APP_.wxapkg
移动端:
/data/data/com.tencent.mm/MicroMsg/xxxxxxxxxxxxxxxxxxxxxxxx/appbrand/pkg
解密代码包
解密后使用反编译工具进行源码提取:(需要其他反编译/解包工具可加星球获取)
反编译成功后,会在当前目录下生成一个 APP文件夹,这里面就是小程序源码。
可以使用微信小程序开发者工具打开:
sign签名绕过:
这里以某SRC小程序为例,在修改手机号处进行测试,观察到数据包如下:
当我们修改请求体中的数据(比如测试手机号越权时)再发送会提示签名失败,这时我们翻阅它的源码,看看这个sign是如何生成的:
整个 create_sign 函数的目的是将对象 r 的所有有效属性(除去某些特定属性)的所有内容按照键值对顺序排序、拼接成字符串并存储到数组 e,最后与传入的 t 参数连接起来进行MD5哈希运算,生成最终的签名。
按照上述请求包,最后得到的值是:
phone_num=15xxxxxxxx5&scene=1256&version=3.3.13d19e4abd1036063faa4218c139378c0e
返回值为
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);
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也提供了脚本模板,可以直接在它的脚本模板中进行修改
这里选择打开enable auto enc/dec会自动调用encrypt方法,在点击重放时自动进行加解密。
0x04 总结
最后总结,小程序测试中碰到sign标识可以先测试是否无效或者是弱加密,如都不是可以尝试通过对源码分析找到sign的生成方式,可以应用在修改支付金额、越权等漏洞更进一步提升危害,将低风险漏洞升级为高危漏洞。喜欢的师傅可以点赞转发支持一下谢谢!
原文始发于微信公众号(渗透安全HackTwo):小程序渗透小Tips绕过sign签名|挖洞技巧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论