Burp Suite 2024.3 实战Python模拟JSEncrypt插件实现RSA加密登录爆破前沿技术背景与实战意义现代Web应用普遍采用前端加密技术保护敏感数据传输其中RSA非对称加密已成为登录表单防护的标配方案。传统Burp Suite爆破教程多聚焦于明文传输场景当面对JSEncrypt等插件实现的RSA加密时常规Intruder模块直接失效。本方案通过Python Flask模拟加密服务实现与Burp Suite的深度集成解决以下行业痛点加密黑盒问题前端JavaScript混淆导致加密逻辑难以逆向动态密钥挑战每次会话使用不同公钥的防御机制性能瓶颈传统JS引擎调用效率低下无法满足高频爆破需求环境搭建与核心组件1. 靶场环境配置推荐使用DVWADamn Vulnerable Web Application作为测试平台其特点包括预置Brute Force漏洞模块可自定义安全等级本次选择Low级别支持HTTPS协议传输# 使用Docker快速部署DVWA docker run --rm -d -p 8080:80 vulnerables/web-dvwa2. 加密分析工具链工具名称作用描述版本要求Burp Suite Pro渗透测试集成平台2024.3Chrome DevTools前端代码调试与分析89Python Flask加密服务API开发框架2.3.2PyCryptodomeRSA加密算法实现库3.19.0RSA加密流程逆向工程1. 前端加密逻辑捕获通过浏览器开发者工具分析登录流程打开DevTools的Network面板勾选Preserve log保持请求记录提交任意账号密码触发加密过程典型加密调用栈示例// 常见JSEncrypt调用模式 const encrypt new JSEncrypt(); encrypt.setPublicKey(publicKey); const cipherText encrypt.encrypt(JSON.stringify({ username: admin, password: 123456 }));2. 公钥提取技巧公钥通常以以下形式存在硬编码在JavaScript文件中通过API接口动态获取如/api/getPublicKey隐藏在HTML注释或meta标签中使用正则表达式快速定位import re def extract_public_key(html_content): pattern r-----BEGIN PUBLIC KEY-----(.*?)-----END PUBLIC KEY----- matches re.findall(pattern, html_content, re.DOTALL) return matches[0].replace(\n, ) if matches else NonePython加密服务实现1. Flask API核心代码from flask import Flask, request, jsonify from Crypto.Cipher import PKCS1_v1_5 from Crypto.PublicKey import RSA import base64 app Flask(__name__) PUBLIC_KEY -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD3XSdz1MnzazBEN5KOfTxUYxh ... -----END PUBLIC KEY----- app.route(/encrypt, methods[POST]) def encrypt_handler(): data request.json key RSA.import_key(PUBLIC_KEY) cipher PKCS1_v1_5.new(key) # 模拟前端加密格式 plaintext fusername{data[username]}password{data[password]} encrypted cipher.encrypt(plaintext.encode()) return jsonify({ ciphertext: base64.b64encode(encrypted).decode() }) if __name__ __main__: app.run(host127.0.0.1, port1664)2. 加密服务验证使用Postman测试接口POST http://localhost:1664/encrypt Content-Type: application/json { username: admin, password: password123 }预期响应{ ciphertext: B1hV3DkFjXaZw9KpLmNtQsE... }Burp Suite高级配置1. Intruder模块配置流程捕获明文登录请求右键 →Send to Intruder在Positions标签页攻击类型选择Cluster bomb清除默认变量标记仅保留加密参数如ciphertext后的值2. Payload Processing配置关键步骤添加Invoke Burp extension处理器选择Python加密服务扩展设置参数映射规则username §username§ password §password§3. 资源池优化策略参数名推荐值说明Maximum requests10并发请求数Throttle500ms请求间隔Retry on failure3失败重试次数实战案例DVWA爆破测试1. 字典文件准备建议采用组合字典策略用户名字典常见管理员账号列表密码字典Top 1000弱密码靶场特征密码# username.dic admin administrator root test ... # password.dic password 123456 admin123 dvwa ...2. 结果分析方法成功登录的特征通常表现为HTTP状态码变化如302重定向响应长度显著差异Set-Cookie头部出现会话令牌响应对比表状态状态码长度(bytes)典型特征登录失败2001250Login failed文本登录成功302356Location: index.php高级防御绕过技巧1. 动态密钥处理方案当遇到每次请求更换公钥的情况时# 动态公钥缓存机制 key_cache {} def get_public_key(session_id): if session_id not in key_cache: resp requests.get(f{TARGET}/api/getKey?sid{session_id}) key_cache[session_id] parse_key(resp.text) return key_cache[session_id]2. 验证码自动化方案对于简单验证码可尝试OCR识别Tesseract引擎机器学习模型CNN分类人工打码平台接入性能优化与错误处理1. 加密服务性能提升# 使用连接池优化 from flask_restful import Api, Resource from concurrent.futures import ThreadPoolExecutor executor ThreadPoolExecutor(10) class EncryptAPI(Resource): def post(self): data request.get_json() future executor.submit(encrypt_task, data) return future.result() api Api(app) api.add_resource(EncryptAPI, /encrypt)2. 常见错误排查连接拒绝检查Flask服务是否启动加密失败验证公钥格式是否符合PKCS#1标准乱码问题确保所有环节使用UTF-8编码法律与伦理边界必须严格遵守的测试原则仅对授权目标进行测试不使用真实用户凭证测试后立即清除所有生成数据发现漏洞后遵循负责任的披露流程重要提示所有技术方案仅限合法安全评估使用未经授权的测试可能违反《计算机信息系统安全保护条例》等法律法规