freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Burp+Python 深度联动:AES加密数据自动化处理实战指南
2025-03-31 22:44:42
所属地 北京

一、核心场景:破解 AES 加密通信的关键需求

1743432108_67eaa9ac1d7747e9197d7.png!small?1743432109342

在渗透测试中,遇到 API 数据采用 AES 加密传输的场景时,需通过脚本实现自动化解密,核心痛点包括:

  • 密文实时解析:Burp 拦截的加密请求体需快速解密以分析业务逻辑
  • 加解密流程闭环:从请求加密发送到响应解密验证的全链路自动化
  • 密钥动态管理:支持硬编码密钥、环境变量读取等多种密钥加载方式

结合真实脚本aesdecode.pyburpy_aes256.py,构建完整的 AES 加解密实战框架,并实现与 Burp 的深度联动。

1743432036_67eaa9640c1926b050577.png!small?1743432037008

二、AES 解密核心算法实现(基于aesdecode.py

1. 基础解密函数设计

from Crypto.Cipher import AES  
from Crypto.Util.Padding import unpad  
import base64  

# 密钥定义:16字节HEX字符串转字节(AES-128)  
AES_KEY = bytes.fromhex('E2842C540F0810C3F11F42427F48A3DE')  

def aes_ecb_decrypt(ciphertext: str, key: bytes) -> str:  
    """      ECB模式AES解密(含Base64解码与PKCS7去填充)      :param ciphertext: Base64编码的密文字符串      :param key: 16/24/32字节的AES密钥(字节类型)      :return: 解密后的明文字符串      """  
    # 1. Base64解码密文  
    cipher_bytes = base64.b64decode(ciphertext)  
    # 2. 创建ECB模式解密器  
    cipher = AES.new(key, AES.MODE_ECB)  
    # 3. 执行解密  
    decrypted_bytes = cipher.decrypt(cipher_bytes)  
    # 4. 去除PKCS7填充  
    plaintext_bytes = unpad(decrypted_bytes, AES.block_size)  
    # 5. 字节转UTF-8字符串  
    return plaintext_bytes.decode('utf-8')  

# 示例解密调用  
sample_cipher = "zWJLUIlnTNe4SnZqvnk0BbS1WHyi8AxZnCyFw1VuZ+vuKMHczygw6a9Owd89Dl6NNAobn/zkWw4BFDQVLX0uUg=="  
print(f"原始密文: {sample_cipher}")  
print(f"解密结果: {aes_ecb_decrypt(sample_cipher, AES_KEY)}")  

2. 关键技术点解析

  • ECB 模式特性
    • 相同明文块生成相同密文块,存在模式缺陷,实际应用需验证是否为弱加密场景
    • 适合单次短数据解密,如 API 参数解密
  • 填充算法
    • 使用unpad自动处理 PKCS7 填充,兼容标准加密接口
    • 若服务端使用非标准填充(如 ISO 10126),需自定义去填充逻辑

三、Burp 联动框架封装(基于burpy_aes256.py

1. 全功能加解密类设计

import json  
from Crypto.Cipher import AES  
from Crypto.Util.Padding import pad, unpad  
import base64  

class BurpAESHandler:  
    def __init__(self, key: str = None):  
        """          初始化AES处理器          :param key: 16/24/32字节HEX格式密钥(默认使用硬编码密钥)          """  
        self.key = bytes.fromhex(key) if key else AES_KEY  

    def encrypt_request(self, header: dict, body: dict) -> tuple:  
        """          加密HTTP请求体(JSON转AES-E
# 漏洞 # 网络安全 # web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录