记录一次前端RSA加密实战
内容提要
本文揭示了一个前端安全漏洞,通过代码分析和调试,成功解密了密码加密函数和公钥处理方法。
延伸解读
前端加密的常见实现与调试切入点
文章展示了前端RSA加密的典型实现:密码字段通过函数g加密,并携带uuid参数。调试时,作者通过搜索loginForm.password定位到加密函数,并利用断点分析。这提示安全测试中,关注Vue双向绑定数据流和关键函数命名(如setPublicKey)能快速找到加密逻辑,但需注意公钥可能经过预处理,不能直接使用。
公钥处理与标准化的重要性
作者发现获取的公钥格式异常,推测加密前对公钥进行了处理,最终通过全局搜索PublicKey找到处理函数,得到标准PEM格式。这说明前端可能对公钥进行编码或拼接,直接使用原始值会导致加密失败。实际分析中,需跟踪公钥的生成和转换过程,确保使用正确的格式进行后续加密操作。
验证加密有效性的方法
文章通过YakRuning模块进行RSA加密,并利用推测的解密函数f验证加密数据可被解密,从而确认加密逻辑正确。这种方法避免了盲目猜测,通过实际加解密测试来验证分析结果。对于前端安全研究,这是一种可靠的验证手段,但需注意仅用于合法授权测试。
Q&A
前端RSA加密中,公钥通常以什么格式存在?
文章中提到,经过处理后的公钥是标准的PEM格式。
如何找到前端密码加密的函数?
可以通过搜索关键字如'loginForm.password',在Vue中双向数据绑定相关代码处下断点调试,找到加密函数。
登录时uuid参数的作用是什么?
uuid参数随验证码刷新更新,通过/prod-api/captchaImage接口获取,用于关联验证码和加密过程。
如何验证前端RSA加密是否有效?
可以使用YakRuning模块进行RSA加密,然后测试加密后的数据能否被解密函数f解密,如果成功则说明加密有效。
前端RSA加密中,公钥和私钥分别对应哪些函数?
根据文章推测,d是公钥,m是私钥,g是加密函数,f是解密函数。
处理公钥的函数可能在哪里找到?
可以全局搜索'PublicKey'关键字,找到类似setPublicKey()的方法,这些函数可能对公钥进行处理。