在项目中往往会遇到JS加密参数的情况,下面是两款不需要编写代码的JS解密工具使用记录
测试环境
可以使用jsEncrypter项目带的靶场进行测试
地址:https://github.com/c0ny1/jsEncrypter
BurpCrypto解密
项目地址:
https://github.com/whwlsfb/BurpCrypto
项目介绍:
支持多种加密算法或直接执行JS代码的用于爆破前端加密的BurpSuite插件
项目特点:
通过在前端页面找到的加密key或者加密公钥实现 对加密参数进行“加解密”。
RAS解密演示
通过分析选择第6种RSA加密需要找到public_key值
往下翻找到了公钥public_key
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0Llg1bVZhnyslfezwfeOkvnXWq59bDtmQyHvxkP/38Fw8QQXBfROCgzGc+Te6pOPl6Ye+vQ1rAnisBaP3rMk40i3OpallzVkuwRKydek3V9ufPpZEEH4eBgInMSDiMsggTWxcI/Lvag6eHjkSc67RTrj96oxj0ipVRqjxW4X6HQIDAQAB
在BurpCrypto设置在RSA设置中添加public_key值,并创建一个处理器test.com
抓包发现已经加密111
使用BurpCrypto进行枚举测试,密码参数添加为变量
设置测试字典
使用BurpCrypto加密字典字段
选择payload processing项,选择从拓展中进行参数处理,选择Burpcrytop里面的test.com处理器
开始枚举测试
字段快速加密
视频演示:
JS-Forward解密
项目地址:
https://github.com/G-Security-Team/JS-Forward
项目介绍
浏览器在对参数进行加密时,通常会将需要加密的参数传入一个加密函数,返回密文。将服务器密文传入一个解密函数,返回明文,那么不管中间使用的是什么加密方式,总会有两个点可以进行修改,即加密函数入参与解密函数返回,此时加解密问题就变成了如何修改js运行过程参数的问题,到了这里思路逐渐明了。方法大致有两种:
1、js hook
2、使用http请求将参数发送出来再外部进行修改,将修改后的返回值再替换原参数。
JS-Forward使用第二种,但是外带出来的好像有点问题,主要还是要定位加密函数调用
解密参数过程
重点是分析加密函数在哪里,怎么调用加密函数,需要把生成的payload插入加密函数后
解密参数放在paswwrod上,提示找不到定义的声明
这里看到被加密的参数是password,通过password生成payload
错误事例
将生成的payload加入在加密函数后,下面这个事例导致无法修改带出来的参数,原因在加密函数在前面就有,所有在后面调用的话,导致无法修改带出来的参数
代理请求的明文字符串就会变成密文
完整演示
原文始发于微信公众号(锋刃科技):常见JS解密工具
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论