文章总结: 本文实战演示了突破前端AES加密混淆的方法。通过抓包定位脚本并反混淆还原密钥与偏移量,利用BurpCrypto插件或Python脚本实现自动化爆破。文章指出静态分析优于动态调试,并建议开发者勿依赖前端加密,转而部署后端速率限制与多因素认证等策略。 综合评分: 75 文章分类: 渗透测试,WEB安全,安全工具,软文广告
实战分享:手把手教你突破前端加密混淆限制
好靶场
2026年1月25日 11:26 四川
编者荐语:
叶宝真棒
以下文章来源于小叶Sec ,作者小叶Sec
小叶Sec .
渗透测试,攻防实战分享
前言
现在的Web应用为了安全,通常会在前端对密码进行加密。如果直接用 Burp Suite(以下简称BP)抓包,你会发现参数是一串乱码(密文)。这时候,普通的字典攻击就失效了。本文将将介绍对于使用JS混淆过的加密
前置知识
揭开前端加密的“外壳”
#
在进入实战之前,我们需要掌握几个核心概念。只有理解了加密和混淆的原理,才能在面对不同网站时灵活应对。
- ##### 为什么代码要“变丑”?—— JS 混淆 (Obfuscation)
开发者为了防止代码被轻易破解,会使用混淆工具。
- 变量名替换:将
password变成_0x45a1。 - 控制流平坦化:将原本直观的
if-else逻辑打乱,变成复杂的switch-case循环。 - 字符串加密:代码中的敏感字符串(如加密 Key)会被编码或隐藏。
- ##### 对称加密的王者 —— 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)之上。
- 引入动态混淆: 虽然不能完全防御,但可以极大提高攻击者的逆向成本。
最后,谢谢大家的观看。如果觉得这期文章对你有帮助,请不吝点赞、在看、分享给身边更多的朋友。如果你有任何疑问或建议,欢迎在评论区留言交流。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:好靶场 《实战分享:手把手教你突破前端加密混淆限制》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论