JsRPC:通过无缝的JavaScript远程过程调用提升前端渗透测试效率

admin 2023年6月28日01:49:14评论58 views字数 1075阅读3分35秒阅读模式

RPC概述

  •     什么是RPC?

全称 Remote Procedure Call——远程过程调用。

  •      在js加密中JsRPC有什么作用?

            比如在访问网站时,我们想直接替换参数,查看有无sql注入或者想枚举密码、挖掘逻辑漏洞替换参数。但是发现参数值是加密的。此时,阅读js代码、补环境很费时费力。上手难度较大。

    这时候就可以使用JsRPC。

  •     RPC的优点:

免去抠代码补环境。

基本流程

  1. 用户找到加密函数的位置【最重要】
  2. 在浏览器的console中输入env.js(包中自带的)
  3. cmd中运行jsrpc程序

 

JsRPC:通过无缝的JavaScript远程过程调用提升前端渗透测试效率

 

jsRPC

  1. 下载地址

    https://github.com/jxhczhl/JsRpc

     

  2. 操作流程

    阅读readme.md

     

  3. 使用流程

找到网站js中的加密处

    插入Jsenv.js到console

将加密函数赋值给全局变量,和RPC建立关系

运行网站功能,用burp拦截请求包防止页面跳转

携带参数访问指定url拿到加密后的参数

案例    

登陆demo 登陆密码进行加密

过分析JS代码,发现调用了 desEncrypt 进行加密

JsRPC:通过无缝的JavaScript远程过程调用提升前端渗透测试效率

 

控制台中执行,注入Client

https://github.com/jxhczhl/JsRpc/blob/main/resouces/JsEnv_Dev.js

JsRPC:通过无缝的JavaScript远程过程调用提升前端渗透测试效率

 

vardemo = new Hlclient("ws://127.0.0.1:12080/ws?group=eip&name=eip"); demo.regAction("desEncrypt", function (resolve,param) {//这样添加了一个param参数,http接口带上它,这里就能获得varout = desEncrypt(param)resolve(out);})

group是组别,name是此次的名称,目的是区分每一个rpc,不过在安全测试当中没什么用处,保持固定就行了。

desEncrypt是方法名,param是传入的参数,resolve将需要的内容返回。param只能传入一个参数,类型应该是字符串。如果需要传递多个参数,需要对字符串进行截取处理。

JsRPC:通过无缝的JavaScript远程过程调用提升前端渗透测试效率

 

可以直接往我们自己创建的WEB服务器发送数据, 对字符串aaa 进行加密

思考

对于前端加密这个场景JS RPC的思路可以大大节省时间,提高效率的。

不过对于漏洞挖掘,碰到有加密的场景,加密请求构造只是第一步。

后续请求Payload 怎么方便的修改并发送出去就是各位大哥的事情了。

原文始发于微信公众号(多才多艺的老王):JsRPC:通过无缝的JavaScript远程过程调用提升前端渗透测试效率

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月28日01:49:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JsRPC:通过无缝的JavaScript远程过程调用提升前端渗透测试效率https://cn-sec.com/archives/2254036.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息