对密文密码进行爆破的一种方法

需求

在爆破某款路由器管理员登录密码时,从burp抓到的包可以看到password参数的值是经过前端加密之后再进行传输的,这种情况下使用明文密码字典几乎不可能爆破成功。我的尝试是本地调用该登录界面用来加密的js函数,将明文密码字典转为对应的密文密码字典。

实践过程

首先我们查看一下点击登录按钮后都执行了哪些js函数。
登录界面
(command+f)搜索check()函数定义的位置,可以看到对密码进行加密的函数是base64encode()和utf16to8()
加密函数
其实这里已经发现是先用Unicode编码再用Base64编码进行加密的,在一些网站上可以直接转换,但我们还是当成未知加密来看。
搜索sources发现加密函数都被定义在base64Encode.js里。
函数定义位置
到这里,我们已经把加密流程理清了,接下来写一个python脚本调用js。

python脚本

需要使用到python的PyExecJS 库(使用方法可以参考其他博客),代码如下

import execjs #导入PyExecJS 库

def get_js(): #导入js文件
    f = open("base64Encode.js", 'r', encoding='UTF-8')
    line = f.readline()
    htmlstr = ''
    while line:
        htmlstr = htmlstr + line
        line = f.readline()
    return htmlstr

jsstr = get_js()
ctx = execjs.compile(jsstr)

def creative_book(): #创建密文密码字典
    f = open("adobe_top100_pass.txt")
    for line in f:
        r = line.strip('\n')
        utf = ctx.call('utf16to8', r)
        base64 = ctx.call('base64encode', utf)
        h = open('adobe_top100_pass_creative.txt', 'a')
        h.write("\n" + base64)
        h.close()
    f.close()

creative_book()

由于我有印象是弱口令密码,所以选择使用kali自带的adobe_top100_pass.txt明文密码字典,跑一下程序,转为我们需要的adobe_top100_pass_creative.txt密文密码字典。
密文密码字典
接下来在burpsuite中爆破时选择该字典就可以了。

猜你喜欢

转载自blog.csdn.net/x1t02m/article/details/81949572