实战分享:手把手教你突破前端加密混淆限制

admin 2026-01-26 02:08:13 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文实战演示了突破前端AES加密混淆的方法。通过抓包定位脚本并反混淆还原密钥与偏移量,利用BurpCrypto插件或Python脚本实现自动化爆破。文章指出静态分析优于动态调试,并建议开发者勿依赖前端加密,转而部署后端速率限制与多因素认证等策略。 综合评分: 75 文章分类: 渗透测试,WEB安全,安全工具,软文广告


cover_image

实战分享:手把手教你突破前端加密混淆限制

好靶场

2026年1月25日 11:26 四川

编者荐语:

叶宝真棒

以下文章来源于小叶Sec ,作者小叶Sec

小叶Sec .

渗透测试,攻防实战分享

前言

现在的Web应用为了安全,通常会在前端对密码进行加密。如果直接用 Burp Suite(以下简称BP)抓包,你会发现参数是一串乱码(密文)。这时候,普通的字典攻击就失效了。本文将将介绍对于使用JS混淆过的加密

前置知识

揭开前端加密的“外壳”

#

在进入实战之前,我们需要掌握几个核心概念。只有理解了加密和混淆的原理,才能在面对不同网站时灵活应对。

  1. ##### 为什么代码要“变丑”?—— JS 混淆 (Obfuscation)

开发者为了防止代码被轻易破解,会使用混淆工具。

  • 变量名替换:将 password 变成 _0x45a1
  • 控制流平坦化:将原本直观的 if-else 逻辑打乱,变成复杂的 switch-case 循环。
  • 字符串加密:代码中的敏感字符串(如加密 Key)会被编码或隐藏。
  1. ##### 对称加密的王者 —— AES 加密

目前前端最主流的加密方式就是 AES (Advanced Encryption Standard)。

关键要素:
  • Key(密钥): 加密和解密的唯一凭证(通常是 16/24/32 位字符串)。
  • IV(偏移量): 增加加密随机性,防止相同明文生成相同密文。
  • Mode(模式): 常见有 ECB(简单但不安全)和 CBC(更常用,需配合 IV)。
3. 爆破的核心逻辑

传统的爆破是:字典明文 -> 发包。 前端加密后的爆破是:字典明文 -> 调用加密逻辑 -> 得到密文 -> 发包。 我们的目标就是通过反混淆找到加密函数,并将其集成到 BP 中。

工具推荐

| 工具名称 | 用途 | | — | — | | BurpCrypto (BP插件) | 在 Burp Suite 内部直接进行各种加密算法的转换。 | | jsEncrypter (可选) | 如果加密逻辑太复杂无法剥离,可用此插件 Hook 浏览器。 |

除此之外我们还需要一个js反混淆的工具,网上工具复杂多样,此篇文章只使用以下js反混淆的工具: 🔗链接:https://webfem.com/tools/js-decode/index.html

靶场推荐

好靶场

学安全,别只看书上手练,就来好靶场。

🔗入口:http://www.loveli.com.cn/

有宝子就问了,主播主播,这么好的靶场怎么用:首先关注好靶场

然后发送bug,可以点击链接直接登录

福利1

找到个人中心,邀请码输入o88lR58MkyInTFv7U5hQ6gGAaArs,白嫖14天高级会员。

福利2

关注好靶场bilibili。拿着关注截图找到客服,领取5积分或者7天高级会员。

漏洞详情

🔗靶场链接:http://new.loveli.com.cn/range?id=612

我们访问网页发现是个登录界面

这里我们随便使用一个用户名和密码尝试一下,并右键检查(F12)检查其发的包。

这里我们发现密码进行加密了,看起来像是base64,使用解码试试

这里解码发现是一串二进制乱码,我们可以查看浏览器的源代码看看是否为前端加密(CTRL+U)

这里我们发现了一个加密脚本,访问看看

这里我们发现一堆0x开头的看不懂的代码,我们可以询问一下AI

我们发现可能是被混淆了,使用反混淆工具尝试

这里我们发现就是一段30行的js代码,并且密钥还有偏移量已经告诉我了,这也太过分了,30行代码混淆这么多。

我们使用这个密钥和偏移量还有代码已经告诉我们了这是AES加密,我们使用解密工具进行解密

这里我们发现成功解密原文,那就好办了,这里我们使用bp的插件进行加密

就是这个插件,我们使用这个插件选择AES并选择加密算法,密钥和偏移量等并取名为爆破(任意名字)

这个时候我们使用bp进行抓包并且发送到Intruder模块

我们根据该靶场提供的字典去进行爆破

字典:https://github.com/haobachang-1/haobachangBlog/tree/main/%E5%AD%97%E5%85%B8

我们先把用户名配置一下,因为是明文,直接载入就行 ,并且选择集束炸弹模式(因为用户名我们也不知道)

然后对密码进行载入

载入之后我们选择pyload处理

选择调用拓展,然后对其进行爆破

对其长度进行爆破成功获得flag

脚本

这里我们也可以使用脚本先将密码字典进行加密后导入

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64
import urllib.parse

# 这里的配置必须与网页源码完全一致
KEY = b'1234567898765432'
IV = b'0123459876012345'

def aes_encrypt(plaintext):
    cipher = AES.new(KEY, AES.MODE_CBC, IV)
    # PKCS7 填充
    ct_bytes = cipher.encrypt(pad(plaintext.encode('utf-8'), AES.block_size))
    # 转换为 Base64
    base64_str = base64.b64encode(ct_bytes).decode('utf-8')
    return base64_str

def prepare_dict(input_file, output_file):
    with open(input_file, 'r', encoding='utf-8') as f:
        passwords = f.read().splitlines()

    with open(output_file, 'w', encoding='utf-8') as f:
        for p in passwords:
            encrypted = aes_encrypt(p)
            f.write(encrypted + "\n")
    print(f"成功!加密字典已保存至: {output_file}")

# 使用示例:假设你有个字典叫 pass.txt
prepare_dict('Password.txt', '加密.txt')

然后一样的导入进行爆破

总结

1. 核心链路复盘
  • 剥茧抽丝: 面对混淆代码,不盲目抓包,而是先通过反混淆工具还原代码本质。
  • 特征定位: 利用 AES 算法的固定特征(Key/IV/Padding),在静态代码中精准锁定加密参数。
  • 无缝集成: 将提取的逻辑配置到 Burp Suite 插件,实现从“手动逆向”到“自动化爆破”的跨越。
2. 为什么静态分析更高效?

相比于动态调试(容易触发反调试脚本、陷入无限循环陷阱),静态分析更加稳健。它直接在代码层面“降维打击”,一旦混淆被还原,所有的加密逻辑在攻击者面前都是白盒状态。

3. 给开发者的安全建议

不要信任前端加密: 加密只能防止传输过程中的明文泄露,无法防御针对逻辑的逆向爆破。

  • 防御重心后移: 真正的安全应建立在后端的频率限制(Rate Limiting)人机校验(CAPTCHA)以及多因素认证(MFA)之上。
  • 引入动态混淆: 虽然不能完全防御,但可以极大提高攻击者的逆向成本。

最后,谢谢大家的观看。如果觉得这期文章对你有帮助,请不吝点赞、在看、分享给身边更多的朋友。如果你有任何疑问或建议,欢迎在评论区留言交流。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:好靶场 《实战分享:手把手教你突破前端加密混淆限制》

评论:0   参与:  0