渗透测试-前端加密分析之RSA+AES
本文是高级前端加解密与验签实战的第8篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过RSA与AES加密来爆破登录。
由于RSA加解密有长度限制,以及解密速度等问题,所以如https等协议都是用非对称加密对称加密的密钥,然后用对称加密算法来加密数据。本关卡就是用RSA来加密AES的key和iv,用AES来加密表单数据。

分析
直接Submit,观察数据包发现请求包和响应包AES加密的key和iv都被加密了。

查看源码,RSA的key是通过请求/crypto/js/rsa/generator路径获取的

AES的加密方法为AES-GCM

流程图如下:
A[开始] --> B(加载页面);
B --> C{获取RSA密钥对};
C -- 是 --> D(从服务器获取公钥和私钥);
D --> E(将PEM格式的公钥和私钥转换为CryptoKey对象);
E --> F(生成随机AES密钥与IV);
F --> G(使用RSA-OAEP加密AES密钥与IV);
G --> H(使用Encrypt函数用AES-GCM方式加密提交的数据);
H --> I(发送加密数据到服务器);
I --> J(接收服务器响应);
J --> K(使用Decrypt函数用RSA与AES-GCM解密接收的数据);
K --> L(显示解密后的数据);
序列+热加载
本文和上文遇到一样的问题,本来打算用第三个请求来解密响应包的,最后选择了使用mirrorHTTPFlow函数来解密。
上文中只能看到登陆成功,但不知道账号密码是什么。这次写了个解密函数解密请求包,不管怎么说,能跑就行。
热加载代码如下:
// RSA-OAEP 加密
rsaEncrypt = (pem, data) => {
data = codec.RSAEncryptWithOAEP(pem, data)~
data = codec.EncodeBase64(data)
return data
}
// AES-GCM 加密
aesEncrypt = (key, iv, data) => {
encryptedData = codec.AESGCMEncryptWithNonceSize12(key, data, iv)~
encryptedData = codec.EncodeBase64(encryptedData)
return encryptedData
}
// 分割参数的函数
splitParams = (params) => {
pairs := params.SplitN("|", 2)
return pairs
}
// 主函数
encrypt = (params) => {
pairs := splitParams(params)
key = randstr(16)
iv = randstr(12)
data = aesEncrypt(key, iv, pairs[1])
encryptIV = rsaEncrypt(pairs[0], iv)
encryptKey = rsaEncrypt(pairs[0], key)
body = f`{"data":"${data}","iv":"${iv}","encryptedIV":"${encryptIV}","encryptedKey":"${encryptKey}"}`
return body
}
// 解密函数
mirrorHTTPFlow = (req, rsp, params) => {
// 获取私钥
pem = params.privateKey
// 切割响应中的数据,作为 JSON 加载
body = json.loads(poc.GetHTTPPacketBody(rsp))
// 提取 IV、KEY 和 DATA
data = body.data
iv = body.encryptedIV
key = body.encryptedKey
// 使用 RSA-OAEP 解密 IV 和 KEY
iv = codec.RSADecryptWithOAEP(pem, codec.DecodeBase64(iv)~)~
key = codec.RSADecryptWithOAEP(pem, codec.DecodeBase64(key)~)~
// 使用 AES-GCM 解密
data = codec.AESGCMDecryptWithNonceSize12(key, codec.DecodeBase64(data)~, iv)~
return string(data)
}
使用Yakit的序列功能,效果如下,在提取数据中显示了未加密的请求和响应的内容:

爆破效果:

渗透测试-前端加密分析之RSA+AES的更多相关文章
- 渗透测试常规思路分析-FREEBUF
最基础但练得好最后也非常厉害 1. 主要由于服务器配置等原因造成的信息泄露 常用google ,bing等搜索工具,轻量级的搜索出一些遗留后门,不想被发现的后台入口,中量级的搜索出一些用户信息泄露, ...
- 再解决不了前端加密我就吃shi
参考文章 快速定位前端加密方法 渗透测试-前端加密测试 前言 最近学习挖洞以来,碰到数据做了加密基本上也就放弃了.但是发现越来越多的网站都开始做前端加密了,不论是金融行业还是其他.所以趁此机会来捣鼓一 ...
- Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建
一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...
- js绕过-前端加密绕过
前端加密解密 目录 前端加密解密 前言 前端加密定位方法 加密绕过实例 其他情况 前言 日常我们在工作时做安全测试或者日常的漏洞挖掘中,往往会遇到请求加密,参数加密的情况,而且绝大部分都是前端加密的情 ...
- GraphQL渗透测试详解
GraphQL介绍 GraphQL概述 GraphQL 是一种查询语言,用于 API 设计和数据交互.它是由 Facebook 发布的一款新型的数据查询和操作语言,自 2012 年起在内部使用,自 2 ...
- JavaScript前端和Java后端的AES加密和解密(转)
在实际开发项目中,有些数据在前后端的传输过程中需要进行加密,那就需要保证前端和后端的加解密需要统一.这里给大家简单演示AES在JavaScript前端和Java后端是如何实现加密和解密的. java端 ...
- 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密
学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA AES RSA AES 混合加密 整合 前言: 为了提高安全性采用了RS ...
- RSA非对称性前端加密后端解密
前端加密代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...
- RSA前端加密
昨天做了登陆模块,接触了md5&RSA加密.有点意思,talk is cheap,show me the code! 前端加密 为什么要加密 前端加密的方式 后台如何解密 1 为什么要加密? ...
- 转发:RSA实现JS前端加密,PHP后端解密
web前端,用户注册与登录,不能直接以明文形式提交用户密码,容易被截获,这时就引入RSA. 前端加密 需引入4个JS扩展文件,jsbn.js.prng4.js.rng.js和rsa.js. <h ...
随机推荐
- iOS 数据持久化方案-Realm的使用小结
一.Realm介绍 1.1.Realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android,核心数据引擎C++打造,并不是建立在SQLite之上的O ...
- Nessus 安装 笔记
Nessus 安装 笔记 根据 https://www.zwnblog.com/archives/nessus-jie-shao-yu-an-zhuang#2.kali%E5%AE%89%E8%A3% ...
- rocketmq安全漏洞
漏洞内容 服务器支持 TLS Client-initiated 重协商攻击(CVE-2011-1473)[原理扫描] 该漏洞存在于SSL renegotiation的过程中.对于使用SSL重协商功能的 ...
- Nuxt.js 应用中的 modules:before 事件钩子详解
title: Nuxt.js 应用中的 modules:before 事件钩子详解 date: 2024/10/15 updated: 2024/10/15 author: cmdragon exce ...
- KubeSphere 社区双周报| 2024.08.16-08.29
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- 云原生周刊:Argo CD v2.12 发布候选版本 | 2024.06.24
开源项目推荐 kOps kOps - Kubernetes Operations,是一个用于创建.销毁.升级和维护生产级高可用 Kubernetes 集群的工具.它支持在 AWS.GCP.Digita ...
- 用微软商店商店安装 Python
在安装 Python 时,除了在官网 www.python.org 下载,还可以用微软商店下载 安装完成后,其目录位于C:\Users\<用户名>\AppData\Local\Micros ...
- MYSQL 批量删除以特定前缀开头的表
前言 这是工作中确实会用到,比如分库分表后有t_order_01.t_order_02.t_order_03...t_order_08 这样的表. 测试过程中造了大量数据进行测试,其中可能含有部分脏数 ...
- vue,js直接导出excel,xlsx的方法,XLSX_STYLE 行高设置失效的问题解决,冻结窗体修改支持
1.先安装依赖:xlsx.xlsx-style.file-saver三个包 npm install xlsx xlsx-style file-saver 出现错误: This relative mod ...
- AI绘画漫谈——从AI网页生成说起
1. 又说"前端已死" 为什么说"又"呢?因为前两年我在一些博客网站三天两头就能看到这个标题,虽然今年好像换话题了,但感觉前端每年都要死个七八次,当然这里面还是 ...