RPC概述
什么是RPC?
全称 Remote Procedure Call——远程过程调用。
在js加密中JsRPC有什么作用?
比如在访问网站时,我们想直接替换参数,查看有无sql注入或者想枚举密码、挖掘逻辑漏洞替换参数。但是发现参数值是加密的。此时,阅读js代码、补环境很费时费力。上手难度较大。
这时候就可以使用JsRPC。
RPC的优点:
免去抠代码补环境。
基本流程
用户找到加密函数的位置【最重要】
在浏览器的console中输入env.js(包中自带的)
cmd中运行jsrpc程序
jsRPC
下载地址
https://github.com/jxhczhl/JsRpc
操作流程
阅读readme.md
使用流程
找到网站js中的加密处
插入Jsenv.js到console
将加密函数赋值给全局变量,和RPC建立关系
运行网站功能,用burp拦截请求包防止页面跳转
携带参数访问指定url拿到加密后的参数
案例
登陆demo 登陆密码进行加密
通过分析JS代码,发现调用了 desEncrypt 进行加密
控制台中执行,注入Client
https://github.com/jxhczhl/JsRpc/blob/main/resouces/JsEnv_Dev.js
group是组别,name是此次的名称,目的是区分每一个rpc,不过在安全测试当中没什么用处,保持固定就行了。
desEncrypt是方法名,param是传入的参数,resolve将需要的内容返回。param只能传入一个参数,类型应该是字符串。如果需要传递多个参数,需要对字符串进行截取处理。
可以直接往我们自己创建的WEB服务器发送数据, 对字符串aaa 进行加密
思考
对于前端加密这个场景JS RPC的思路可以大大节省时间,提高效率的。
不过对于漏洞挖掘,碰到有加密的场景,加密请求构造只是第一步。
后续请求Payload 怎么方便的修改并发送出去就是各位大哥的事情了。
领取专属 10元无门槛券
私享最新 技术干货