破军安全实验室
本文约2200字,阅读约需6分钟。
0x00 定位js调用
红队某目标登陆抓包发现存在编码
解码看一下,不是base64,那就确认是前端加密
其实前端常见的加密就aes、des两种,但部分网站也开始用国密算法了,其中最最常见的就是aes的cbc和ecb两种算法,常规网站里面几乎占到80%
浏览器定位js文件,f12定位登录框源码位置
获取到
登陆表单元素定义
<form class="el-form loginformel-form--inline">
用户名元素定义
<div class="el-form-item usernamenoborder no_border is-required">
密码元素定义
<div class="el-form-item noborderno_border is-required" id="login_psw_out">
选取有特征的值去js文件内搜索,我一般是选择密码或用户名的“id”值(login_psw_out)进行定位,这里也可以选取表单class的“loginform”值
在chunk-eb0ca2d0.f7daedc4.js文件匹配到两次,我们去看js文件内容,发现是在读取页面元素值
那么js的加密调用就以这个开始分析,原因?每个文件翻一遍
0x01 Js加密分析
前面初步定位到js文件上,再使用请求内的字段(verificationCode)对js进行搜索,定位调用函数代码段
翻了一下
断点js代码,点击登陆查看内存,鼠标放在“userName”上可以直接看到明文test
第二个断点就变成了密文,那么加密操作就是在这几行代码之间,那就去分析Object(r.b)
将鼠标放到b上可会显示来源的js,点击跳转过去直接到调用函数,aes加密方式和key、vi就很明显了
找一个在线网站进行测试
http://tool.chacuo.net/cryptaes
确认和burp内一样
0x02 burp爆破
windows推荐使用nodejs,到官网下载安装,cmd执行node命令如下表示环境搭建成功
burp插件使用jsEncrypter,成果效果如下
网上说将js文件保存下来加载,这种方法太麻烦了,直接使用
npm install crypto-js
安装对应加密库,在nodejs_server.js内引用即可
运行node nodejs_server.js开启服务,burp连接,加密字符串,结果与前面抓包一样,完结
0x03 其他
其实nodejs运行部分可以改成加密指定文件内容输出到新文件
除了burp也可以python脚本调用,浏览器访问
改post请求
POST / HTTP/1.1
Host: 127.0.0.1:1664
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type:application/x-www-form-urlencoded
Content-Length: 12
payload=test
0x04 sign签名分析
新添字段后,签名无效,那么就是全内容的sign校验(校验不会包含http消息头)
第一步先看长度,40位
用常见的md5(这里肯定不是)、sha算法看一下,对不上,那就只有去js文件里找了
通过timestamp字段定位到app.9e755cb0.js文件,开始分析
这里通过断点查看,内存中n值如下,原来sign是包含了时间、固定key、请求内容的,怪不得对不上
"yjihua_stationBT3muleJTQChzbZWappKeyyjihua_stationformatjsonparam_json{"method":"xxxxxxxxxxxxxxxxxxxx","userName":"MPcRaxIxPldcFycE4eSgUg==","password":"bXZI55bgBXvB5KFgLD5rKw==","mac":"","verificationCode":"","langCode":"zh_CN","requestChannel":"PC"}timestamp2021-12-2310:20:35version1.0BT3muleJTQChzbZWyjihua_station"
对s()进行逐步分析,定位到c类,包含如下函数,明显是个签名算法类
断点到s()通过“步入”调试(尝试了hmacsha1也对不上),进入(自定义?)签名函数,可以发现a(20位)的hex就是sign值
76 204 186 对应4c cc ba
后面只需要请团队大佬帮忙写出脚本即可
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,破军安全实验室及文章作者不为此承担任何责任。
破军安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经破军安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
破军安全实验室
# 长按二维码 关注我们 #
原文始发于微信公众号(破军安全实验室):前端js加密爆破分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论