一款有手就行的JS逆向RPC框架

适用于Web爬虫领域的RPC解决方案,相较于其他框架,其具有的高并发和多线程特点,非常适用于网安参数fuzz。

CatWebRPC

目录结构

CatServer-服务端

catserver Wamp路由 基于 express fox-wamp autobahn

npm i express
npm i body-parser
npm i fox-wamp
npm i autobahn

需要安装node.js环境,这部分自行进行安装(文末提供一份node_modules的网盘地址),安装完成后,配置好端口信息,运行即可

CatWebService-客户端

在网页插入CatWebService.js运行,同样在文件中配置好对应的端口

F12,复制代码到console回车运行

出现注册完成的同时,在Network也有一条websockt的请求

进行注册调用

先注册

F12也是在console进行注册调用

//window.catwampy.register(topic,func,opt)  
//topic: 同java包名类似 域.名.方法名  
//func: js的function 需要调用的方法  
//opt: 同Wampy.js opt参数一致 另外增加了一个concurrency 并发设置 一般不需要设置 或者根据需求填写  

//如下 注册了一个zhiyuan方法 给定并发(同时的请求)设置为10  
window.catwampy.register('rpc.sanshi', sanshi, { concurrency: 10 });

对于我们需要修改的方法就是上面的func参数,也就是里面的sanshi,这个地方需要换成可以执行的方法

eg:

这里我们想要调用的方法是o.default.encrypt(a, "qcc"),那我们在注册的时候写的就是

window.catwampy.register('rpc.sanshi', o.default.encrypt, { concurrency: 10 });

后调用

调用的支持的请求包格式如下:

POST请求
POST http://IP:PROT/call?topic=接口的topic HTTP/1.1
Content-Type: application/json

["参数1","参数2",1,true,1.1,{}]  //类似json 支持不同类型  类似js apply(this,参数数组) 中的参数数组

这里提供一个Python的请求调用示例:

import json
import requests

input_str = input("password:")
url = "http://127.0.0.1:5000/call?topic=rpc.sanshi"
headers = {
    "Content-Type": "application/json"
}
data = json.dumps([input_str, "test"])

response = requests.post(url, headers=headers, data=data)

print(response.json())

最后运行的效果是:

坑点

有些网站在网页注入CatWebService.js代码时,会报错:

Refused to connect to 'ws://127.0.0.1:5000/rpc' because it violates the following Content Security Policy directive: "connect-src 'self' https://127.0.0.1:8099 http://127.0.0.1:15180 http://127.0.0.1:18080".

原因:网站响应包的头里带有content-security-policy-report-only,使用代理修改响应头里把他删除就行。

免责声明

免责声明:本博客的内容仅供合法、正当、健康的用途,切勿将其用于违反法律法规的行为。如因此导致任何法律责任或纠纷,本博客概不负责。谢谢您的理解与配合!

微信公众号

本文链接:

https://sanshiok.com/archive/2.html

# 最新文章