Attacker安全航天日
JS逆向
渗透测试中经常会遇到JavaScript的加密数据,这时候就需要就需要进行JS逆向解密,那什么是JS逆向,即JavaScript逆向工程,是一种针对使用JavaScript加密或混淆的网站进行解密分析的技术手段。在Web开发中,为了保护数据和防止恶意抓取,网站开发者会使用JavaScript对数据进行加密或混淆处理。而JS逆向工程的目的就是为了理解这些加密逻辑,从而实现对数据的提取或绕过某些安全措施。
1.首先打开网站,找到登录功能,输入账号密码、验证码等信息登录,查看network,可以看到登录时的请求payload内容。
主要有bundleId,data,encrypt,sign,tempKey,timestamp这几个参数,通过多次请求发现,bundleId和encrypt的值是固定的,所以在查找逻辑是这两个参数可以忽略。
通过断点可以查看到sign,timestamp,tempKey的生成逻辑,则timestamp为时间戳,而sign的生成和i有关,控制台打印g()函数和a,发现是通过MD5对a的数据进行了加密处理
接着去分析tempKey,发现tempkey有两个不一样的值,其中return返回的r是用户所看到的数据,而r又经过了处理,同样在控制台打印Object(h["b"])函数,发现这是一个加密函数
点击进入函数,找到网站的加解密函数
先回到r,继续分析Object(m["b"])(n.CSK),发现是一个数组
进入函数Object(m["b"]),发现是一个数组函数
同样控制台打印n.CSK查看是什么值,通过观察也发现n.CSK的值是固定的
所以可以猜测Object(m["b"])(n.CSK)的逻辑是将一串长度16的字符串转化成了长度16的数组,即tempkey则是通过加密函数f加密之后,最后展示在数据包之中。
至此我们的关键字段的逻辑也就分析完成了,剩下的就是通过脚本去实现自动化加解密了,总结下来,js逆向的思路大致为:
1.找到解密算法
2.分析加密算法逻辑
3.扣取js代码或通过其他脚本去实现自动化加解密
如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
前面有同学问我有没优惠券,这里发放100张100元的优惠券,用完今年不再发放