渗透测试-前端加密分析之AES
前言
本文是高级前端加解密与验签实战的第3篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过前端 AES(CBC) 和 AES(ECB) 加密。
因为编写Yakit热加载代码后就可以正常爆破密码,所以不需要每次都演示。以后的文章会省略掉爆破密码这一步,直接输入正确密码查看效果。
前端加密登录表单-AES(CBC)
分析
查看源代码,可以看到加密方式为AES,查询网上资料得知,此encrypt方法默认为CBC模式。
key为:1234123412341234
iv为随机生成的:
将用户名和密码以json的格式进行AES加密
使用CyberChef加密
替换请求data内容,验证成功。
POST /crypto/js/lib/aes/cbc/handler HTTP/1.1
Host: 127.0.0.1:8787
Content-Type: application/json
Content-Length: 169
{
"data": "2/eylw258wQNJQznPd5zr7xpNWzPR3vcgCmY3zwuTdW0WjSwbNzAhTraiebLdPRK",
"key": "31323334313233343132333431323334",
"iv": "67ba30beaabf8ccfebeca655d487805a"
}
热加载
这是本人写的Yakit热加载代码,通过beforeRequest
劫持请求包,使用encryptData
函数进行加密,最终实现热加载自动加密功能。
encryptData = (packet) => {
body = poc.GetHTTPPacketBody(packet)
hexKey = "31323334313233343132333431323334"
hexIV = "67ba30beaabf8ccfebeca655d487805a"
key = codec.DecodeHex(hexKey)~
iv = codec.DecodeHex(hexIV)~
data = codec.AESCBCEncrypt(key /*type: []byte*/, body, iv /*type: []byte*/)~
data = codec.EncodeBase64(data)
body = f`{"data": "${data}","key": "${hexKey}","iv": "${hexIV}"}`
return string(poc.ReplaceBody(packet, body, false))
}
//发送到服务端修改数据包
beforeRequest = func(req){
return encryptData(req)
}
效果:
前端加密登录表单-AES(ECB)
分析
模式变为AES的ECB模式,其他的与CBC模式基本一样。
zqBATwKGlf9ObCg8Deimijp+OH1VePy6KkhV1Z4xjiDwOuboF7GPuQBCJKx6o9c7
热加载
功能跟上面大致一样。ECB模式不需要iv,修改成ECB加密,然后删除掉iv相关代码即可。
encryptData = (packet) => {
body = poc.GetHTTPPacketBody(packet)
hexKey = "31323334313233343132333431323334"
key = codec.DecodeHex(hexKey)~
//ECB模式加密
data = codec.AESECBEncrypt(key /*type: []byte*/, body, nil /*type: []byte*/)~
data = codec.EncodeBase64(data)
body = f`{"data": "${data}","key": "${hexKey}"}`
return string(poc.ReplaceBody(packet, body, false))
}
//发送到服务端修改数据包
// beforeRequest = func(req){
// return encryptData(req)
// }
//调试用
packet = <<<TEXT
POST /crypto/js/lib/aes/cbc/handler HTTP/1.1
Host: 127.0.0.1:8787
Content-Type: application/json
Content-Length: 179
{"username":"admin","password":"admin123"}
TEXT
result = (encryptData(packet))
print(result)
成功加密
渗透测试-前端加密分析之AES的更多相关文章
- 渗透测试常规思路分析-FREEBUF
最基础但练得好最后也非常厉害 1. 主要由于服务器配置等原因造成的信息泄露 常用google ,bing等搜索工具,轻量级的搜索出一些遗留后门,不想被发现的后台入口,中量级的搜索出一些用户信息泄露, ...
- 前端加密传输 crypto-js AES 加密和解密
配置: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 再解决不了前端加密我就吃shi
参考文章 快速定位前端加密方法 渗透测试-前端加密测试 前言 最近学习挖洞以来,碰到数据做了加密基本上也就放弃了.但是发现越来越多的网站都开始做前端加密了,不论是金融行业还是其他.所以趁此机会来捣鼓一 ...
- Kali Linux Web渗透测试手册(第二版) - 1.0 - 渗透测试环境搭建
一.配置KALI Linux和渗透测试环境 在这一章,我们将覆盖以下内容: 在Windows和Linux上安装VirtualBox 创建一个Kali Linux虚拟机 更新和升级Kali Linux ...
- js绕过-前端加密绕过
前端加密解密 目录 前端加密解密 前言 前端加密定位方法 加密绕过实例 其他情况 前言 日常我们在工作时做安全测试或者日常的漏洞挖掘中,往往会遇到请求加密,参数加密的情况,而且绝大部分都是前端加密的情 ...
- GraphQL渗透测试详解
GraphQL介绍 GraphQL概述 GraphQL 是一种查询语言,用于 API 设计和数据交互.它是由 Facebook 发布的一款新型的数据查询和操作语言,自 2012 年起在内部使用,自 2 ...
- 【渗透技术】渗透测试技术分析_TomCat
[渗透技术]渗透测试技术分析_TomCat 本文转自:i春秋论坛 渗透测试-中间人攻击(原理)说起“中间人攻击”我想大多数对渗透测试又了解的朋友都多少有所了解,因为我们用到的次数真是非常的多.它可以将 ...
- Firefox渗透测试黑客插件集
前天看S哥用Firefox的hackbar进行手动注入进行渗透,觉得直接运用浏览器的插件进行渗透测试有很多优点,既可以直接在前端进行注入等操作,也可以省却了寻找各种工具的麻烦.前端还是最直接的!于是这 ...
- Python:渗透测试开源项目
Python:渗透测试开源项目[源码值得精读] sql注入工具:sqlmap DNS安全监测:DNSRecon 暴力破解测试工具:patator XSS漏洞利用工具:XSSer Web服务器压力测试工 ...
- 手把手教渗透测试人员打造.NET可执行文件
在进行渗透测试的过程中,我们有时候会希望使用可执行文件来完成某些任务.最近,我们在测试过程中拿下了一个网站,从而获得了一次发动水坑攻击的机会. 原文地址:https://www.peew.pw/blo ...
随机推荐
- Git 本地仓库与基础操作指令
本地仓库 获取本地仓库 在电脑任意位置创建一个空目录(例如test)作为我们的本地Git仓库 进入这个目录中,右键打开Git Bash窗口 执行 git init命令 如果创建成功后可在文件夹下看到隐 ...
- placement new --特殊的内存分配
placement new 是 C++ 中的一种特殊的内存分配技术,用来在指定的内存地址上直接构造对象.与普通的 new 运算符不同,placement new 并不分配新的内存,而是在已经分配好的内 ...
- USB协议详解第7讲(补充-USB帧和微帧剖析)
1.概念 (1)USB2.0帧和微帧属于物理层时间基准的概念,低速和全速下每个帧时长为1ms,高速下每个帧又分为8个微帧,即每个微帧时长为125us. (2)USB主机和设备控制器同步后,每个微帧起始 ...
- USB协议详解第6讲(USB描述符-端点描述符)
1.USB描述符 USB描述符有设备描述符.标准配置描述符.接口描述符.端点描述符.字符串描述符,HID设备有HID描述符.报告描述符和物理描述符.今天主要是学习USB端点描述符的组成. 2.端点描述 ...
- 2022年2月国产数据库排行榜:冠军宝座面临挑战,OceanBase 重返 TOP3
大家好!文章开始本是用"新春快乐!虎年吉祥!"和大家打个招呼,无奈时间过得太快而文章整理得很慢,眼看崭新的三月还有几天就到来,那就在这里祝屏幕前的你在三月比二月更优秀! 月初,20 ...
- 关于自定义事件父子组件传值问题 $event
1.$event 是 vue 提供的特殊变量,用来表示原生的事件参数对象 event 1.1在原生事件中,$event是事件对象 可以点出来属性 2.在原生事件中,$event是事件对象,在自定义事件 ...
- kotlin类和对象—>类与继承
1.类的定义,kotlin中依旧使用关键字class声明类,类声明由类名.类头(指定其类型参数.主构造函数等)以及由花括号包围的类体构成.类头与类体都是 可选的;如果一个类没有类体,可以省略花括号. ...
- spring boot 与spring boot admin整合问题处理
1.在整合springboot admin server时,发现admin client无法注册到admin server上 查找原因后发现代码中报错:HttpMediaTypeNotAcceptab ...
- js中window全局变量
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 探索 Kubernetes 持久化存储之 Rook Ceph 初窥门径
在 Kubernetes 生态系统中,持久化存储是支撑业务应用稳定运行的基石,对于维护整个系统的健壮性至关重要.对于选择自主搭建 Kubernetes 集群的运维架构师来说,挑选合适的后端持久化存储解 ...