小程序挖掘-js逆向请求与解密

admin 2025年3月6日16:30:20评论9 views字数 1952阅读6分30秒阅读模式
点击蓝字,关注我们
0x01
某小程序 点开一个小程序抓取数据包 发现全都是加密 不管是请求还是响应

小程序挖掘-js逆向请求与解密

害 现在随便挖个洞都需要js逆向

直接反编译小程序导入微信开发工具发现这个请求参数叫requestData还有一个叫iv都进行了加密运算,直接全局搜索requestData 找到此地方 发现iv也在此

小程序挖掘-js逆向请求与解密
断点调试后 发现requestData他有3个值组成然后t函数对此进行处理第1个参数.打印JSON.stringify(c) 刷新了几次发现是一个固定值 发现像请求载荷 然后class来控制第几个模块

page来控制不同页码

小程序挖掘-js逆向请求与解密
2.第二个参数u  往上一跟发现
小程序挖掘-js逆向请求与解密
u调用了d函数 点进去看一下
小程序挖掘-js逆向请求与解密
发现如下直接拷过来发现u是一个生成随机字符串的函数
小程序挖掘-js逆向请求与解密
第3个参数:a.decodekey
小程序挖掘-js逆向请求与解密
发现是未定义的 那就不处理了
接下来就是处理包裹这些参数的t

小程序挖掘-js逆向请求与解密
发现是aes加密
小程序挖掘-js逆向请求与解密
断点调试后发现就是将刚刚的e值进行aes加密  第二个参数n就是u就是生成随机字符串的iv 如下
小程序挖掘-js逆向请求与解密
i然后将n进行处理赋值给iv key则是固定字符串图中已写那么逻辑理通了 最后直接调用nodejs的加密库进行处理就能打印我们requestData 和iv值

const CryptoJS = require("crypto-js");function d() {    const a = ["1", "2", "4", "5", "3", "8", "0", "7", "9", "6", "A", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "S", "D", "F", "G", "H", "J", "K", "L", "q", "w", "S", "e", "a", "s", "d", "z", "x", "c", "v", "f", "r", "t", "g", "b", "y", "h", "n", "m", "j", "u", "i", "o", "k", "l", "p"];    let e = "";    for (let n = 0; n < 16; n++) {        e += a[Math.floor(Math.random() * a.length)];    }    return e;}const u = d();const c = '{"acc_id":78,"page":1,"class":2,"sort":"4","appid":"wx41cd4f32cf8164b3","ver":"7.0.0","min_push":0,"scene":1001}';function t(c, u) {    const r = "WAG0JIUGYALACVJF"; // 密钥    const key = CryptoJS.enc.Utf8.parse(r);    const iv = CryptoJS.enc.Utf8.parse(u); // 应该保证 u 是 16 字节    return CryptoJS.AES.encrypt(c, key, {        iv: iv,        mode: CryptoJS.mode.CBC,        padding: CryptoJS.pad.Pkcs7    }).toString();}const requestData = t(c, u);function get_header() {    console.log(requestData);    console.log(u);}get_header();
小程序挖掘-js逆向请求与解密
最后拿到我们的值得放进burp验证一下是否可以获取数据
小程序挖掘-js逆向请求与解密
可以发现可以正常读取数据那么接下来处理响应即可
小程序挖掘-js逆向请求与解密
0x02
全局搜索decrypt
小程序挖掘-js逆向请求与解密
发现也是aes解密 e是我们响应的密文 n打印出来是固定字符串 最后扣代码执行
function jiemi(e, n = "XV9LXBQGYXPIZHA7") {    var r = "WAG0JIUGYALACVJF";  // 默认密钥    const key = CryptoJS.enc.Utf8.parse(r);    const iv = CryptoJS.enc.Utf8.parse(n);    // 解析Base64字符串    const ciphertext = CryptoJS.enc.Base64.parse(e);    // 解密过程    const decrypted = CryptoJS.AES.decrypt({ ciphertext }, key, {        iv: iv,        mode: CryptoJS.mode.CBC,        padding: CryptoJS.pad.Pkcs7    });    // 返回解密后的字符串,确保转换为UTF-8    return decrypted.toString(CryptoJS.enc.Utf8);}var data = "密文"console.log(jiemi(data));
最后运行
小程序挖掘-js逆向请求与解密
拿到不少敏感图片链接。
END

原文始发于微信公众号(小呆安全):【实战小技巧系列】小程序挖掘-js逆向请求与解密

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

发表评论

匿名网友 填写信息