首页 > 其他分享 >记一次前端请求与响应包全加密的解码过程

记一次前端请求与响应包全加密的解码过程

时间:2023-02-27 14:47:27浏览次数:42  
标签:aes 加密 包全 rsa 解码 解密 js 前端

即上次解密后,开发不死心,过了几个月,给返回包也进行了加密。并对前端js进行了压缩混淆

 

 

 

根据观察,初步认为服务端也进行了相同的rsa+aes加密,然后把rsa加密后的key和iv以及aes加密的data字段一起发送回来。但是这样其实对于我们来说,反而是画蛇添足,让系统安全性下降了。因为这样会让前端去进行rsa+aes的解密,所以rsa私钥一定会存在前端

开始操作

1.老规矩搜索encryptIv字段,找到了疑似解密的部分,打上断点后提交登录请求

 

 

 

Burp抓包返回包,提取data字段

 

 

 

 

断点处提取rsa解密后的aes的key和iv值

 

把从前端断点处的n和a作为key和iv放入鬼鬼js调试工具尝试解密,解密成功,说明思路没有问题,就是该处代码对服务器传来的encryptIv,encryptKey进行解密为aes原本的密钥和偏移量

2.    根据解密代码,找到rsa私钥(p.d),显示不全,复制一段ctrl+f搜索到完整的rsa私钥

 

 

使用jsencrypt.js脚本进行解密发现报错,原因是原版js调用了浏览器的window和navigator方法,这两个是获取浏览器窗口信息和鼠标位置信息之类的,用以生成随机数

 

 

 

通过搜索,发现有人先做过更改原版JSEncrypt,去掉window和navigator方法使用,帖子地址:https://bbs.125.la/forum.php?mod=viewthread&tid=14113049

使用鬼鬼js调试成功

 

 

3.    最后一步,完善编写自动化加解密脚本,老规矩,还是mitmweb+burp的组合,浏览器先代理到burp,然后burp二级代理到mitmweb执行python脚本,然后再发送给服务器,大致思路如

其实当时以为已经完成了90%了,剩下10%是编写自动化脚本,结果这10%反而花了几天时间,因为调用js解密不成功的原因。后面解决了,大体来说和aes算法以及js,python有关系。我们可以下期具体来讲讲这块大坑!今天就先跳过这部分。

最后再上次的脚本上面,加上了注销前端解密的代码,以及mitmweb帮助解密response的代码就行了。

调试成功,burp已经舒舒服服,全程操作明文了。

顺便,恩?发现有一个验证码返回前端的高危漏洞哈哈哈。但是我心善,既然这个加解密一时半会搞不出来的,现在都周五了,就下周一再来叫开发修复漏洞吧。具体的新增代码部分我们留到下次,和aes解密这个大坑的时候一起讲。

 

 

标签:aes,加密,包全,rsa,解码,解密,js,前端
From: https://www.cnblogs.com/backlion/p/17159598.html

相关文章

  • Java基础——(综合练习)普通加密
    packagecom.zhao.test;publicclassTest18{/*需求:​某系统的数字密码(大于0),比如1983,采用加密方式进行传输。规则如下:......
  • net 6 使用 加密sqlite
    用加密sqlite使用了sqlciphone1、在nuget中安装(1)microsoft.entityframeworkcore.sqlite.core (2)sqlitepclraw.bundle_e_sqlcipher2、设置连接字符串在appsettings.j......
  • OpenSSL 介绍(4)--非对称加密
    本文主要介绍如何使用OpenSSL来进行非对称加解密,使用的算法为RSA,DSA算法的使用方法类似;文中所使用到的软件版本:OpenSSL1.1.1s、CentOS 7.9.2009。1、非对称加密算法......
  • Go语言中密码加密校验
    使用go自带的库bcryptbcrypt是不可逆的加密算法,无法通过解密密文得到明文。bcrypt和其他对称或非对称加密方式不同的是,不是直接解密得到明文,也不是二次加密比较密文,而是......
  • Python3的AES加密和解密
    此加密和解密的秘钥的长度必须是16位、24位或者32位importbase64importosfromCrypto.CipherimportAES#AESkeymustbeeither16,24,or32byteslongaes_key="1......
  • 3 - 标准数据加密(DES)及其备选
    标准数据加密(DES)及其备选我的博客原书:《UnderstandingCryptography:ATextbookforStudentsandPractitioners》数据加密标准从出现到现在的30年一直都是最流......
  • Day 23 23.1:js加密算法
    js加密算法逆向重点掌握的内容:1.逆向的思维2.网站逆向的分析思路和步骤注意:重点不是放在代码中,而是分析的思路和套路(技巧)逆向到底是什么?通俗来讲,逆向就是处理爬虫过......
  • 【后端过程记录】用flask搭建服务器作后端接收数据 将base64字符串码解码为可读取文件
    因为项目的原因了解到有一个python的flask框架,查了一下:关于前端图片上传的canvas:如下元素<canvasid="canvas"width="5"height="5"></canvas>可以用这样的方式获......
  • JavaScript加密代码反调试
    JavaScript奇技淫巧:加密JS代码反调试JS代码混淆加密,已被很多人使用,因为它真的很有用、很实用,可以用于保护代码、防护分析、复制、盗用,还可以用于小游戏过审、APP加固等方面......
  • JAVA 【SM2】加密解密
    JAVA【SM2】加密解密前言:最近项目中必须用到SM2的加密解密引入的Maven依赖<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId>......