使用JSRPC实现前端加密破解,自动化加密

2024-06-24 322 0

前言

当我们遇到一些前端加密的时候,通常我们会去逆向JS,找到加密函数,然后使用burp插件或者python实现加密,这样我们还需要扣一些细节去补环境,下面介绍利用JSRPC的方法(只需要找到加密函数)实现加密

JSRPC就是远程调用协议,简单来说就是我们可以本地编写代码去调用浏览器的JS加密函数,我们就不需要去考虑函数的具体逻辑了

实现过程案例

这里以人人网为例,点击登录,看下提交的数据包,首先可以看到有几个参数是加密的

使用JSRPC实现前端加密破解,自动化加密插图

这里经过测试,其中appKey是固定的,password为md5加密,callId是时间戳,我们只需要获取sig值就可以

经过测试后发现sig的加密函数在这里,我们只需要s和r.secretKey,s就是需要加密的字段,控制台可以直接打印出格式,后面的为固定值

使用JSRPC实现前端加密破解,自动化加密插图1

这里先写下我们的服务端代码并运行

使用JSRPC实现前端加密破解,自动化加密插图2

import sys
import asyncio
import websockets
async def receive_message(websocket):
    while True:
        send_text = input("请输入要加密的字符串:")
        if send_text == "exit":
            print("退出!")
            await websocket.send(send_text)
            await websocket.close()
            sys.exit()
        else:
            await websocket.send(send_text)
            response_text = await websocket.recv()
            print("加密结果:", response_text)
start_server = websockets.serve(receive_message, "127.0.0.1", 8088)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

然后我们进行js本地改写

打开F12,点击Sources-Overrides-Select folder for Overrides添加一个文件夹用来存放改写后的js脚本

使用JSRPC实现前端加密破解,自动化加密插图3

弹出的界面选择允许就好

使用JSRPC实现前端加密破解,自动化加密插图4

切到Page,找到相关js文件,右键选择Override content

使用JSRPC实现前端加密破解,自动化加密插图5

然后添加我们的websocket客户端代码

使用JSRPC实现前端加密破解,自动化加密插图6

(function () {
	var ws = new WebSocket("ws://127.0.0.1:8088")
	var secretKey = "bcceb522717c2c49f895b561fa913d10" //需要定义这个secretkey,不然会导致加密结果出错
	ws.onmessage = function(evt) {
		console.log("收到消息:" + evt.data);
		var dataObject = JSON.parse(evt.data); //将字符串转换为js对象
		if (evt.data == "exit"){
        	ws.close();
        }else{
			ws.send(ze.getSign(dataObject,secretKey));//dataObject为s
		}
	}
                        
}
)();

返回前端刷新,后端输入加密字符串即可实现加密

使用JSRPC实现前端加密破解,自动化加密插图7

添加接口进行自动化加密

修改下服务端代码然后启动

import asyncio
import websockets

connected = set()
async def server(websocket):
    connected.add(websocket)
    try:
        async for message in websocket:
            for conn in connected:
                if conn != websocket:
                    await conn.send(message)
    finally:
        connected.remove(websocket)
start_server = websockets.serve(server, "127.0.0.1", 8088)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

使用python启动一个web服务,添加一个接口用来进行加密

import asyncio
import json
import websockets
from flask import Flask,request
app = Flask(__name__)
loop = asyncio.get_event_loop()


async def encode(message):
    # 连接 websocket 并发送消息 获取相应
    async with websockets.connect("ws://127.0.0.1:8088") as websocket:
        await websocket.send(message)
        return await websocket.recv()
def get_encrypt(message):
    return str(loop.run_until_complete(encode(message)))

@app.route('/encrypt', methods=['POST'])
def encode_str():
    if request.is_json:
        data_dict = {}
        data = request.get_json()
        data_dict['user'] = data.get('user')
        data_dict['password'] = data.get('password')
        data_dict['appKey'] = data.get('appKey')
        data_dict['sessionKey'] = data.get('sessionKey')
        data_dict['callId'] = data.get('callId')
        dataobject = json.dumps(data_dict)

        return get_encrypt(dataobject)

if __name__ == '__main__':
    app.run(port=5001)

启动好两个脚本

使用JSRPC实现前端加密破解,自动化加密插图8

使用burp构造下数据包提交到我们写好的加密接口,刷新前端就可以实现自动化加密

使用JSRPC实现前端加密破解,自动化加密插图9

RPC框架

Sekiro链接:https://github.com/yint-tech/sekiro-open

SEKIRO是一个多语言的、分布式、网络拓扑无关的服务发布平台,通过书写各自语言的handler将功能发布到中心API市场,业务系统通过 RPC的方式使用远端节点的能力

JSRPC链接:https://github.com/jxhczhl/JsRpc

原理:在网站的控制台新建一个WebScoket客户端链接到服务器通信,调用服务器的接口,服务器会发送信息给客户端,客户端接收到要执行的方法执行完js代码后把内容发回给服务器,服务器接收到后再显示出来


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论