渗透测试过程中往往会遇到爆破密码的场景,但往往网站前端密码会经过加密, 如果加密复杂且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() 



