⚠️ 免责声明
本文所涉及的技术、工具及方法仅供网络安全研究、授权测试及学习交流使用。
严禁非法使用:未经目标系统所有者明确书面授权,任何利用本文所述技术对他人系统进行渗透、爆破、数据窃取或破坏的行为,均属违法行为。
法律责任自担:读者因不当使用本文内容所产生的任何直接或间接法律后果、经济纠纷及安全事件,均由行为人自行承担,与本文作者及发布平台无关。
遵守法律法规:请严格遵守《中华人民共和国网络安全法》《中华人民共和国数据安全法》等相关法律法规,在合法授权范围内开展安全测试。
合规操作建议:如您需在实际工作中进行安全评估,请务必事先获得正式授权,并在测试完成后及时向被测方提交漏洞报告。
作者仅提供技术思路分享,不鼓励、不纵容任何形式的黑灰产行为。请做一名有底线的安全从业者。
一、背景:
有时我们在抓包发现一些参数会被自定义加密,或者用户名密码被自定义加密了。(如下图) 那我们怎么解决这个问题呢?(顺便吐槽一下,我在网上查找了好多资料都是零碎的,对于我这种零基础不太友好 哈哈哈,终于东拼西凑出来了)

jsEncrypter 插件的核心思路是 “以彼之矛,攻彼之盾” ——既然前端加密逻辑是由 JavaScript 代码执行的,就在 BurpSuite 外部模拟一个浏览器环境,加载目标网站相同的加密 JS 文件,用相同逻辑对 Payload 进行加密,再替换请求中的对应字段。实现原理如下图所示。

目录
参考资料:
提纲:JS逆向,前端加密暴力破解(小白无痛学习)-腾讯云开发者社区-腾讯云
phantonJS下载与使用:
phantomjs下载安装与使用_phantomjs安装-CSDN博客
插件项目地址及讲解:https://github.com/c0ny1/jsEncrypter
Maven下载与使用:
【2025 最新】 Maven 下载安装与配置教程(超详细带图文Windows 版):从入门到实战_maven下载安装与配置-CSDN博客
Js逆向:
网页加密传输插件&jsEncrypter&phantomJS:
https://www.bilibili.com/video/BV1i7411876q/?spm_id_from=333.1391.0.0&vd_source=7d8464f1ea919ffdc1761c211c6d1c4e
二、环境准备
Burpsuite肯定是必备的,相信大家都有,然后Java版本最好是java21
1 phantomJS
下载
下载地址:
https://phantomjs.org/download.html

是哪个系统就下载哪个,我这里用的是Windows.
配置环境变量

下载好后放到合适的文件夹下解压 打开文件夹


点一下地址栏就可以复制地址

右键此电脑选择属性
点一下地址栏就可以复制地址

选择高级系统设置

选择环境变量

在下面的系统环境变量中找到Path点击选择编辑

选择新建,将刚刚复制的地址粘贴进去,最后依次点击确定,有三个确定
测试环境变量是否添加成功

按win+r输入cmd回车打开终端

输入命令:
phantomjs --version
回车,返回版本好就说明配置好了
2 Maven下载安装
下载
因为插件是用java写的,需要Maven编译成 Burp 能加载的 .jar 文件
下载地址:
https://maven.apache.org/download.cgi

选择Link下带bin-zip的压缩包下载
配置环境变量

建议放在D:\Apache\apache-maven-3.9.16下,将解压的第一层文件夹改名Apache,然后添加一个文件夹repository

右击此电脑-->属性-->环境变量和上面一样就不贴了,忘记了的往上爬.点击新建,变量名输入:
MAVEN_HOME
变量值输入安装位置:
D:\Apache\apache-maven-3.9.16
点击一次确定回到环境变量的页面

选择Path-->编辑-->新建-->输入:
%MAVEN_HOME%\bin
依次点击确定即可
测试环境配置是否成功

重新打开命令行,输入:
mvn -version
回车,回显版本就是成功了
配置仓库路径地址和镜像地址

默认配置下,Maven 会从国外中央仓库下载依赖,速度极慢且易失败。需修改settings.xml文件,配置本地仓库和国内镜像。
进入conf文件夹下,用vscode或者能编辑代码的(记事本也可以)打开setttings.xml文件编辑
CTRL+F查找<localRepository>标签(默认被注释)去掉注释,然后把里面的替换为本地仓库地址

直接将下面的代码覆盖过去,配置阿里云的镜像
<mirrors>
<mirror>
<id>aliyun-maven</id>
<mirrorOf>central</mirrorOf>
<name>Aliyun Central Repository</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<!-- 备选镜像:如需切换到华为云,注释掉上面的 aliyun-maven 并取消下面注释。
注意:Maven 的 mirror 没有“故障自动切换”机制,同一个仓库只会命中第一个匹配的镜像。 -->
<!--
<mirror>
<id>huaweicloud</id>
<mirrorOf>central</mirrorOf>
<name>HuaweiCloud Repository</name>
<url>https://repo.huaweicloud.com/repository/maven/</url>
</mirror>
-->
<!-- <mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror> -->
</mirrors>
3 jsEncrypter插件下载
这一步需要访问外网,国内可能有点卡上不去,可以用Watt Toolkit免费访问GitHub
下载地址:

选择自己的操作系统

点击 接受并下载
在微软商店里下载

勾选GitHub再点击一键加速就能访问GitHub啦

访问GitHub项目地址:https://github.com/c0ny1/jsEncrypter
点击绿色的Code,选择Download ZIP下载


解压到合适的路径下面,点地址栏输入cmd回车

输入:
mvn package
回车,将会编译下载好的java项目成jsEncrypter插件
测试能不能跑已有的加密算法

打开Burp,点击扩展,点击添加,英文的就翻译一下吧

点击选择文件,找到你在GitHub上下载的插件应该在jsEncrypter-master\target路径下,然后点击下一个,显示输出

点击插件

找到这个路径下,点击地址栏输入cmd回车

输入命令:
phantomjs.exe jsEncrypter_base64.js
回车

点击Connect连接,IsConnect就会由红色的False变成绿色的True,点击Test测试就会将左边的按照base64加密显示在右边,注意123456加密之后为MTIzNDU2,后面要考
GitHub上面下载的项目还带一个提供测试的环境,可以用小皮或者靶机部署,没有小皮就上网找教程.然后项目自带几个常见的加密算法

将jsEncrypter-master\test路径下的webapp放到网站根目录(WWW下面),再打开小皮启动服务

浏览器输入127.0.0.1/webapp模拟访问的登录框

随便输入账号密码admin/123456-->F12或者右键选择检查-->点击网络(NetWork)-->点击提交submit-->找可能传输参数的包,然后点击它-->选择负载(payload)发现密码是被加密了,密码的字段为password:MTIzNDU2,和bp插件加密的是一样的
三、 实战分析前端提取js代码并爆破
1 让AI提取js加密逻辑

首先我们打开有登录功能的网页,按F12-->点击源代码-->刷新页面会看到几个js模块,一般索引网页是调用加密算法,jquery是一些js运行所需要的依赖,rsa里面一般都是加密算法,看见未知的js文件名就去问AI是干什么的,和加密有没有关系。我们右击可能和加密有关的js文件,选择另存。然后交给AI.

提示词:
burp插件jsEncrypter+phantomjs,分析前端代码结构,提取出能加密参数整个过程的代码

我用的是deep seek,它提示根据实际公钥调整参数,说明它没找到公钥。


我们来到索引,发现指数和模组,这就是公钥,发给AI让它调整代码。
生成之后你看AI的描述没啥问题了就新建文本文件,将代码保存
更该文件后缀为js,我定义成ai提取.js

去找加载加密算法的js文件,路径为:
"jsEncrypter-master\test\TestScript\Base64\jsEncrypter_base64.js"
把ai提取.js文件和jsEncrypter_base64.js文件发给AI,让它修改成jsEncrypter_base64.js能接收ai提取.js处理参数的值(我更改了js文件名,所以长得不一样)
提示词:
这是加载加密算法的js文件jsEncrypter_TEMPLATE.js和刚刚提取加密算法的js文件,以该文件为模板修改ai提取.js,使之能够正常加载


它没有给完整的,我们就按要求更改相关的代码然后保存。这两个文件最好放同一路径下,然后在那个路径下打开命令行。我放在桌面

右键终端。
输入:
phantomjs.exe jsEncrypter_base64.js
启动服务(如果之前启动了服务还没关,按ctrl+c中止服务,再输入命令启动),

打开bp找到插件再点击连接,然后测试

我们发现和我们生成的长度是一样的,因为有随机种子和时间戳,每次都不一样。
没关系,这不影响,只要是按照这个算法加密的就能被服务器还原出来。我们把生成的加密值替换发送返回200,说明成功了。
2 爆破
接下来我们尝试爆破,我抓包几轮发现PHPSESSID字段标识会话,KEY_RANDOMDATA字段标识每次请求,我们实际情况中还要重定向KEY_RANDOMDATA这个变量,就像token递归提取,验证码也需要另外的插件识别。我们在这里简化没有这个东西,也没有验证码。只看能否将加载的字典被算法加密发送出去。

添加密码变量,输入几个参数进去,payload处理选择burp扩展

选择开始攻击,发现参数都被加密了。
&spm=1001.2101.3001.5002&articleId=163995842&d=1&t=3&u=cda3568c67d746e1a984cf2fa3dec6cf)
319

被折叠的 条评论
为什么被折叠?



