JS加密之逻辑密码找回漏洞案例

华盟原创文章投稿奖励计划

JS加密之逻辑密码找回漏洞案例

0x01 前言在日常登录和获取验证的时候,会遇到各种各样的加密方式,今天介绍最近刚到的提示。加密密码出现在表单提交过程中,下面是中国电信的登录中,支持详细讲解利用pyv8来加密的。0x02 JS加密首先我们电信用户的登录了解xxx.cn/web/login ,打开开发者工具,点击网络,输入手机号和秘钥,点击验证码,点击登录,在所有人栏登录。JS加密之逻辑密码找回漏洞案例可以看到密码字段是加密以后的密码,那么怎么加密的呢?JS加密之逻辑密码找回漏洞案例点击发现右边的不就是加密吗?不着急,我们看到CryptoJS库了吗?https://xxxx.cn/web/static/js/crypto-js/rollups/aes.min.js 分析一下这就是JS加密算法,的思路是加载CryptoJS发现然后,用他来加密我的密码,我们来找到CryptoJS这个加密JS。JS加密之逻辑密码找回漏洞案例继续下看我们看到aes.min.js(进去后发现就是我们上面需要的加密算法),到这里我们才能够成功,然后下载这个加密算法,运行加密函数,我们输入的明文密码再加密成密文。我们先下载aes.min.js这个js文件,保存到本地取名为:crawl_.js。
接下来就是我们使用pyv8来执行JS加密的过程,代码如下:

import PyV8  ctxt = PyV8.JSContext() 
ctxt.enter() 
c = raw_input('请输入验证码:') 
add = ''' 
aesEncrypt = function() { 
    var t = CryptoJS.MD5("login.189.cn "), 
        i = CryptoJS.enc.Utf8.parse(t), 
        r = CryptoJS.enc.Utf8.parse("1234567812345678"), 
        u = CryptoJS.AES.encrypt('''+"'{}'"。格式(c)+''',i, { 
            iv: r 
        }); 
    返回 u + "" 
}; 
''' 
with open('crawl_.js')as f: 
    a = f.read() 
func = ctxt.eval(a + add) 
print func()

JS加密之逻辑密码找回漏洞案例运行代码我们输入:123456 加密后的结果为:aeMui9uecQAA8XCQwfpUEA== 

0x03 实战案例某运营商在修改用户密码的时候,对随机值的解密。
JS加密之逻辑密码找回漏洞案例如果返回正确的加密的结果,那么就可以重置密码了。如下图:JS加密之逻辑密码找回漏洞案例strDec可以看到随机的加密过程,data.res则为我们需要加密的值。
JS加密之逻辑密码找回漏洞案例我们根据strDecdes.js找到
JS加密之逻辑密码找回漏洞案例我们就可以通过调用des.js来进行加密。

打印 LoginCrypt.utf16to8(LoginCrypt.desEnc('53869', '1', '2','3'))+'n'

JS加密之逻辑密码找回漏洞案例最后就是可以重置密码了。JS加密之逻辑密码找回漏洞案例

文章来源:雾晓安全

黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!

如侵权请私聊我们删文


END

JS加密之逻辑密码找回漏洞案例

本文来源雾晓安全,经授权后由华盟君发布,观点不代表华盟网的立场,转载请联系原作者。

发表回复