freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

前端动态密钥与非对称加密场景下的测试
2023-10-17 14:12:01
所属地 上海

前端动态密钥与非对称加密场景下的测试

在进行app测试或者一些银行测试过程中通常会遇到数据包全加密的情况,一般比较常见的加密为CryptoJS AES的前端加密技术。在安全测试的过程中,AES-CBC/ECB 的组合可能是我们最常遇到的两种,最简单的就是直接硬编码加密,密钥key固定不变,有时也会存放在JS代码中。

第二种在对称加密算法中,IV 是一个随机数或者有规律的变化,通常与密钥一起用于加密数据。IV 的主要目的是确保相同的明文在不同加密会话中产生不同的密文,以增加安全性。它与密钥一起混合在加密算法中,以确保每次加密操作都产生唯一的结果,安全实践中,IV 若是动态变化,这意味着每个数据块都可以有一个不同的 IV,即使相同的明文多次加密,由于 IV 的不同而产生不同的密文。动态 IV 变换可以通过一些特定的算法或协议来实现。

还有一种稍微麻烦的是站点使用了组合加密,在测试过程中可能会遇到密文一直变化的情况,比如使用 RSA 与AES技术来加密通信数据以避免明文传输,这个场景可能初步听起来略微抽象,但是实际上却非常常见,先请求服务器获取Key,利用获取到的Key在进行二次加密,最终服务器使用密钥进行解密。

以下使用三个真实案例来进行演示,方便大家理解。

1、加密方式为静态加密

一般静态加密在JS代码中全局搜索encAES、encrpyData等相关加密字段,可获取到密钥key以及加密方式,可以看到下图使用了ECB加密,我们可以直接去使用在线网站或者解密插件去进行解密,这种加密比较简单。

1697512264_652dfb485c34f51c8796e.png!small?1697512265048

利用burp解密工具进行解密autoDecoder或者在线解密网址进行解密获取明文字段。

1697511854_652df9ae6951de818205b.png!small?1697511854858

解密后对明文进行修改重新加密发送进行测试

1697512334_652dfb8e90c5521858e4b.png!small?1697512335195

第一个案例相对简单,直接获取密钥然后去解密即可。

2、加密方式为动态加密

某些网站中在登录界面处发起登录请求时,提交数据包内容不同,加密的内容也会有所不同,需要深入到JS代码中去调试获取加密规则。

1697520308_652e1ab4cff4c93a6f1c1.png!small?1697520309351

比如下图加密数据包,每次被加密后的内容都不相同,遇到这种情况就需要去打断点进行调试

# 渗透测试 # web安全 # 加密解密 # JS加密算法
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录