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

admin 2022年6月16日00:01:37评论1,928 views字数 1425阅读4分45秒阅读模式
免责声明
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。如有侵权烦请告知,我们会立即删除并致歉。谢谢!


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加密之逻辑密码找回漏洞案例

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

往期推荐 

// 1

XSS漏洞靶场(挑战)

// 2

最新BurpSuite2022.5.1专业版破解

// 3

CRLF 注入扫描仪

// 4

从SQL注入绕过最新安全狗WAF中学习fuzz

获取更多文章,戳“阅读全文

原文始发于微信公众号(雾晓安全):JS加密之逻辑密码找回漏洞案例

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月16日00:01:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JS加密之逻辑密码找回漏洞案例http://cn-sec.com/archives/1119432.html

发表评论

匿名网友 填写信息