针对前端加解密的解决方案
在平时的日常测站过程中,经常遇到前端加密相关的对抗,对请求包及响应包进行加密、HASH校验对抗修改,根据加密算法可以分为以下几种: 字符编码:例如base64等。 对称加密:AES、RC4、DES、国密SM4等。 非对称加密:RSA、ECC、国密SM2等。 混合加密:混合多步加密,例如使用AES加密内容 + RSA加密密钥,拼接进SHA1做哈希,AES + base64等。 哈希算法:用于加密解密时的数据校验,例如SHA1/256、MD5、国密SM3等。 对于字符加密,对称加密,部分非对称加密算法: 使用 autoDecode 自带的算法可解。 对于复杂的加密算法,或是不想去逆向算法,不想扣JS补环境: 使用 autoDecode 的接口加解密 配合 JSRPC 提高工作效率。 对于复杂的加密算法,例如需要判断数据包来源时,或是扣出JS函数想直接调用时: 使用Galaxy实现,支持JS 和 Python脚本,可在Hook函数中直接执行JS 函数,也可发起http请求配合JSRPC进行加解密。 扩展插件 autoDecode 最常用的解密插件,通过内置算法与接口加解密配合,基本可以覆盖80%的加解密需求。 数据解密流向: Proxy 历史:浏览器客户端 -> Burp autoDecode栏 显示解密包 -> 发送到服务端 -> 服务端响应加密包 -> 返回 Burp -> Burp autoDecode栏 显示解密包 -> 浏览器返回密文 代理数据全程对数据包无修改,解密过程仅UI中展示。 Repeater 重放:编辑明文包 -> Burp 调用加密 -> 发送到服务端 -> 返回 Burp -> burp autoDecode栏 显示解密包 -> 浏览器 区别是请求时直接是密文,需要在加密时判断当前是否已加密,已加密则避免重复加密,未加密需要自动加密。 部分缺点: ...