Winter
Solstice
点击蓝字 关注我们
前言
特别声明:
本篇文章只用来作为技术分享,请勿将此技术用于违法活动上。不得将以下内容用于商业或者非法用途,否则,一切后果请读者自负。
再次声明,仅供学习研究。
如有侵权,请立刻后台联系我删除。
正文
抓个包,一眼就看到大大的/x/xxlogin/x/x
看看数据,来源+明文账号+密文密码+跳转链接+验证码数据,听标准的一个登陆口子。
验证码数据token/challenge/validate/seccode都是联网交互返回的,没啥加密的,不作分析。直接来看password字段。为了方便追js栈,去DevTools里抓一波,发现调用堆栈还挺多,并且函数名还做了混淆。
不过疑似关键处的地方不知道为啥没混淆。
最开始的那个疑似堆栈如下,目测确实是登录模块的起调入口。
然后跟一下login函数,发现DevTools跟偏了,不过问题不大,上下找一下还是可以找到的。
其中很明显的一段字段包装语句。
跟一下encryptPassword函数。
发现似乎是服务器实时生成密钥对然后返回公钥的加密方式。
因为RSA用公钥加密后的数据是有随机化处理的,所以并不唯一,而没有私钥又没法解密抓包的数据,所以验证咱们加密思路正确的唯一方法就是写个脚本模拟登录。但是我懒得去验证了,就把思路发一下吧,基本上可以确定是对的。接收hash和key,分别作为盐和公钥,然后将hash和密码拼接后RSA一下,就是传递的密码密文。The End
文章已经经过脱敏处理
原文始发于微信公众号(Th0r安全):记一次某产品WEB端登录密码加密分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论