JS安全-算法逆向

admin 2023年11月29日01:04:34评论9 views字数 1386阅读4分37秒阅读模式

前言

js全称JavaScript是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。这是官方的介绍,现在部分网站会在登入功能上,采用js定义算法对我们登入提交表单的数据进行加密,采用js加密客户端和服务端的流程分别是。

客户端用户登入->数据获取->数据加密->发送数据

服务端接收数据->数据解密->逻辑判断->返回结果

那这会对我们渗透造成什么影响呢?我们看下面这两个站。

采用js定义算法加密的


JS安全-算法逆向

无加密

JS安全-算法逆向

可以很明显看出区别,第二个就不用说了,如果我现在要对第一个网站进行密码爆破,在我不清楚具体的加密算法的情况下是爆破不了的,因为我们抓包,替换数据采用的明文,根据我们上面列的流程,对方服务器上会进行解密,这能解出来个毛。所以我们的目的是寻找对方的加密算法,把我们要提交的明文数据进行加密,我这里介绍两种方法。

全局搜索

通过抓包参数名进行代码全局搜索,我们直接复制登入文件的url地址,全局搜索,看对方哪个文件有包含这个url地址,这种在文件不是很多的情况下比较方便。

Ctrl+Shift+F搜索对应url

JS安全-算法逆向

一下就找到调用加密算法的文件,往上找到加密的类,我们直接在控制台new实例,再引用。

JS安全-算法逆向

成功对我们输入的字符串进行了加密。

流程断点

通过审查元素抓网络请求包发起程序

JS安全-算法逆向

这里要注意点,我们看堆栈的逻辑顺序是由下到上,我们根据字面意思选择login查看跳转,断点后重发数据包

JS安全-算法逆向

可以看到它这一步已经把我们提交的数据加密了,所以我们往上一步跟就能看到对应代码了,后续就和前一种一样了。

实战案例

上海交大js算法逆向

JS安全-算法逆向

打开网站尝试登入,查看数据包发现password进行了加密,我们查看堆栈进行分析

JS安全-算法逆向

跳转发现对应代码,下断点,重新发包,发现password的值已经改了,我们往前面看

JS安全-算法逆向

发现rsa关键词,应该是它的加密算法,还有一个o,应该是key,然后它这里是new JSEncrypt这个类,我们找到定义它的文件,复制,放到js运行环境中,我这里使用在线环境,再加上它调用执行的代码,修改一下。

JS安全-算法逆向

运行

JS安全-算法逆向

那当我们找到对方的加密算法后,我们就可以使用burp的插件来帮我们爆破时自动加密

Burp插件jsEncrypter使用

插件介绍:jsEncrypter是一个用于前端加密Fuzz的Burp Suite插件,可以对数据进行加密,方便对加密数据输入点进行fuzz,比如可以使用于前端加密传输爆破等场景。

除插件外我们还需要下载一个phantomjs

插件使用也是非常简单

我们先把我们找到的js加密文件保存到插件目录下,插件目录下有一个phantomjs_server文件,我们对这个文件进行修改

JS安全-算法逆向

然后使用phantomjs运行phantomjs_server.js

phantomjs phantomjs_server.js

JS安全-算法逆向

运行之后会监听本地1634端口,我们打开burp选择插件,测试连接

JS安全-算法逆向

点击connect按钮,放回true即连接正常,再点击test测试加密

JS安全-算法逆向

功能正常,现在对网站进行测试

抓取登入数据包,放到爆破模块中,把密码设置为替换值,然后加载插件

JS安全-算法逆向

然后开始跑,看看效果

JS安全-算法逆向

成功实现明文加密,接下就是我们正常的爆破逻辑了。


对应工具已打包,点击下方名片进入公众号回复关键词【js0523】获取下载链接

原文始发于微信公众号(菜狗安全):JS安全-算法逆向

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月29日01:04:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JS安全-算法逆向https://cn-sec.com/archives/2249972.html

发表评论

匿名网友 填写信息