微信小程序签名逆向分析

查看 167|回复 11
作者:Aur0ra   
前不久在渗透小程序的时候,发现了签名的逻辑,于是:


image.png (214.86 KB, 下载次数: 0)
下载附件
2023-4-16 23:02 上传

二话不说,先拖源码:
  • 在PC端找到对应的__APP__主包
  • 用https://github.com/BlackTrace/pc_wxapkg_decrypt进行解密后,再用wxUnpack进行解包即可

    阅读源码,全局搜索enc关键字,或找路由附加的逻辑即可。找到相关的签名逻辑:


    image.png (102.24 KB, 下载次数: 0)
    下载附件
    2023-4-16 23:03 上传

    整体就是先将参数按照参数名进行排序后,进行拼接,然后再加上 cmscms 字符串,最后调用MD5进行处理即可。


    image.png (91.57 KB, 下载次数: 0)
    下载附件
    2023-4-16 23:03 上传

    后续就是一贯的思路了,不作赘述。
    (整体难度一般。大体和web 前端js加密一致,关键还是先获取到源码,定位到参数加密逻辑)

    下载次数, 逻辑

  • OrzzCatt   


    Aur0ra 发表于 2023-4-20 15:13
    看RSA的加密是固定的还是动态的,如果是动态的那可能只能就没办法了

    应该不是动态的吧 这个score明文值是800,请求可以重放,加密模块的云函数数据也就传了这个值。。
    请求接口数据是这三个:
    openid = xxxxxxxxxx
    score = CgaOyx7wNzWpEw5ByD6YgV0FXAtj7M1z06hsw2xm0ZFgt4pILQwjhWS1BXxe89HF/lLlTfiT3cggQbemJc+kSU/V9BjuaBzsr068YjhSPQ9wlEBSB6H08hwqyYThW7HQKc0TgNu8gES9AjAo9LQBcSR8Vs6zCKbL682vs3mQnJ17AbTaDHp2a6ccZwDGdnK8b66hXr0g4/4bogAagcGZ0JFVkMEV1etNtmKCLvzm2Bra4ogVOXK2Mg/6fW+ZfAH/eorOmbURpw2fQAtWPauIRJECB7CP0xhqdh8205TtlvyiueahddF1gBC4CVdSU3aJg/b05zoyjo2siwvanhPLoA==
    tempId=null
    score加密模块:
    [JavaScript] 纯文本查看 复制代码cloudRsa: function cloudRsa(e, t) {
        g.iswxgame() && (wx.cloud.init({
            traceUser: !0
        }), wx.cloud.callFunction({
            name: "rsa",
            data: {
                score: e
            },
            complete: function complete(e) {
                t(e.result.encrypted);
            }
        }));
    }
    想问问佬有没有什么方法指点一二
    Aur0ra
    OP
      


    OrzzCatt 发表于 2023-4-20 14:46
    大佬 最近看一个小程序反编译的发现有个参数调了云函数(rsa)加密的,像这种情况有没有什么处理思路,让小 ...

    看RSA的加密是固定的还是动态的,如果是动态的就只能每次修改参数并发送请求前先获取动态的签名密钥进行签名。相当于每次需要进行两次请求:1. 获取动态密钥并对修改后的参数进行签名 2. 发送附带签名的请求
    G103   

    学习一下,感谢分享
    2255291   

    学习一下,感谢分享
    ydmmocoo   

    学习了,签名破解后,就能做很多事了
    Hcj665766   

    学习一下,感谢分享!
    ToyvicLove7   

    感谢分享
    jjghaa1234   

    感谢大佬分享,学习之事任重而道远啊
    GMCN   

    大佬,用的抓包工具是什么
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部