渗透测试过程中往往会遇到爆破密码的场景,但往往网站前端密码会经过加密, 如果加密复杂且js经过压缩,加密算法往往不好提取。本工具直接利用网站加密功能 加载字典生成加密后密文密码用于爆破。
- 利用chrome动态调试功能运行到加密算法上下文环境。
- 采用python flask开启http服务用于js获取字典。
- 网站运行到加密算法时,在控制台利用js xhr获取字典并加密。
- 加密后密文通过js写入本地文件。
- python开启http服务,dictPath改为字典文件路径
dictPath = "dict.txt"
- 找到加密算法并下断点
- 运行到加密算法处
- 控制台输入SiteJsEncrypt.js脚本内容 请求地址替换为要加密的字典路径,删除所有断点,运行到结束。 xhr.open('GET', 'http://127.0.0.1:5000/dict'); n = s(p,e,r); 加密算法根据网站进行替换。
let xhr = new XMLHttpRequest();
xhr.open('GET', 'http://127.0.0.1:5000/');
xhr.send();
xhr.onload = function() {
let as = xhr.responseText.split("\n");
console.log(as);
let psa = "";
function writeFile(fileName, content){
let a= document.createElement('a');
let blob = new Blob([content],{type:'text/plain'});
a.download = fileName;
a.href = URL.createObjectURL(blob);
a.click();
};
for(let i=0;i<as.length;i++)
{
let p = as[i].replace(/\"|\\n|\s+/g,"");
//console.log(p);
// 替换加密算法
let n = Q["a"].aesEncrypt(p);
console.log(n);
psa = psa + n+ "\n";
};
writeFile("pass.txt",psa);
};
网站设置
不安全内容改为允许
from flask import Flask
from flask_cors import *
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}})
@app.route('/')
def password():
with open("newp.txt","r") as file:
str =""
fs = file.readlines()
for f in fs:
str = str + f
return str
if __name__ == '__main__':
app.run()