渗透攻防之前端JS加密该如何破局

admin 2023年12月19日00:53:27评论44 views字数 1147阅读3分49秒阅读模式

前言

渗透测试过程中最常见的一种场景就是登录框,而在登录框上最头疼的就是登录框参数字段的值被进行了加密,我们无法进行下一步的FUZZ OR Intruder,导致很多时候错过很多漏洞。那么碰到这种情况该怎么办呢?

破局

在参数被进行加密的情况下可以对其进行解密或者来模拟其JS加密方式,这涉及到JS逆向。而在JS逆向中,常常用到的两种方法就是JS扣取和补全JS环境,但是在我们渗透测试的过程中,我们常常采用的方法就是JS扣取,假如需要用到补全JS环境去进行JS逆向,个人感觉性价比就比较低了,因为就算我们花大量的时间去补全了环境能够进行解密,其系统也不一定存在漏洞。所以这里主要介绍一下JS扣取,早期JS扣取我是直接把JS代码扣取出来利用一些脚本语言去模拟他的加密算法,后面我常用的就是一款BP插件,可以简化如上步骤。

项目地址如下

https://github.com/c0ny1/jsEncrypter

正文

下载插件,进行编译

mvn package

也可以用Releases里面项目作者编译好的

编译好把target里的jar文件添加进去

渗透攻防之前端JS加密该如何破局

渗透攻防之前端JS加密该如何破局

添加好就可以在BP里面看到如下界面

渗透攻防之前端JS加密该如何破局

然后该项目里面还提供了一个test文件夹

渗透攻防之前端JS加密该如何破局

test文件夹里面存放的是一个PHP版本的测试靶机,我们可以利用靶机试试该插件的有效性

首先把test文件夹下的webapp测试代码搭建起来(可以直接使用PhpStudy,把webapp直接放在PhpStudy的Web目录即可),搭建完成如下

渗透攻防之前端JS加密该如何破局

靶机提供了7个算法对密码进行加密后传输

base64
md5
sha1
sha254
sha384
sha512
RSA

这里我们选一个RSA来进行测试,抓包发现password字段被加密

渗透攻防之前端JS加密该如何破局

可以在源代码中看到加密逻辑如下

渗透攻防之前端JS加密该如何破局

引用了js/jsencrypt.js文件,但是这里还缺少了一个PublicKey,一般在JS攻防之中,PublicKey常常会被混淆处理,靶机是为了测试用,所以PublicKey被直接写在了源代码之中(其实实际开发中,也有很多PublicKey是没做混淆的)

渗透攻防之前端JS加密该如何破局

那我们来模拟它的加密环境,首先下载一个phantomjs,安装之后添加到环境变量

https://phantomjs.org/download.html

渗透攻防之前端JS加密该如何破局

然后把加密逻辑添加进phantomjs_server.js文件里面

渗透攻防之前端JS加密该如何破局

渗透攻防之前端JS加密该如何破局

然后把靶机中jsencrypt.js代码复制出来,我这里重命名为了rsa.js(注意假如,加密引用了多个文件,LoadScript里面的引用顺序也要和浏览器的顺序一致)

渗透攻防之前端JS加密该如何破局

然后启动server

渗透攻防之前端JS加密该如何破局

回到BP里面进行连接测试,如下服务器启动成功

渗透攻防之前端JS加密该如何破局

渗透攻防之前端JS加密该如何破局

加密正常后,我们就可以正常加载我们自己的测试字典,然后走我们的插件进行模拟加密就ok

渗透攻防之前端JS加密该如何破局

渗透攻防之前端JS加密该如何破局

渗透攻防之前端JS加密该如何破局

原文始发于微信公众号(猪猪谈安全):渗透攻防之前端JS加密该如何破局

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月19日00:53:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透攻防之前端JS加密该如何破局http://cn-sec.com/archives/2314650.html

发表评论

匿名网友 填写信息