一款有手就行的JS逆向RPC框架
适用于Web爬虫领域的RPC解决方案,相较于其他框架,其具有的高并发和多线程特点,非常适用于网安参数fuzz。
目录结构
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,使用代理修改响应头里把他删除就行。
免责声明
免责声明:本博客的内容仅供合法、正当、健康的用途,切勿将其用于违反法律法规的行为。如因此导致任何法律责任或纠纷,本博客概不负责。谢谢您的理解与配合!