概述
渗透测试过程中遇到web登录的时候,现在很多场景账号密码都是经过js加密之后再请求发送(通过抓包可以看到加密信息)
burp抓到的包,request的post的登录包,password参数的值是经过前端加密之后再进行传输的,遇到这种情况,普通发包的爆破脚本就很难爆破成功。鉴于这种情况,这边分析四种方式进行绕过加密爆破
1)既然是前端s加密,代码我们都能看得到,我们搭个服务器,每次发包前,把要发送的加密参数用服务器加密一遍,我们再把加密后的参数发送过去,这样相当于本地还原了加密过程
2)利用selenium webdriver等完全模拟人工输入,字典也可以自定义,不过需要自己写脚本而已,这种方法比较万能
3)这种方法适合有js功底的同学,首先把他的js加密过程跟方法看懂,然后本地简化或者用其他语言模拟他的加密过程,再自己写脚本去跑,或者生成加密后的字典直接burp去跑即可
4)cony1老哥为了方便后辈,写了一款burp插件, https://github.com/c0ny1/jsENcrypter,名为jsEncrypter,简单来说就是把1,3点结合了一下,用插件方便地跑起来
这里主要讲一种 大佬的工具jsEncrypter
jsEncrypter工具
https://github.com/c0ny1/jsEncrypter
安装流程
- 安装maven
具体看这里:https://www.runoob.com/maven/maven-setup.html
-
安装好maven后,把jsEncrypter下载回来解压缩,然后在他的文件夹下,打开cmd窗口,然后运行mvn package,就可以把插件编译成型,编译好后会多出一个target文件夹
-
然后把target文件夹里面的jar插件添加到burp里面
总共有两个
- 安装phantomjs
https://phantomjs.org/download.html
下载需要的版本 然后 配置环境变量 这里自己百度一下 很简单
开始实践
把jsEncrypter-master\test下webapp的文件复制到phpstudy或者mamp或者其他你习惯用的简便服务器搭建起来
然后开起来 可以看到有六种加密方式
严格来说base64只能算一种编码方式
选择sha1来进行演示。
编写phantomJS脚本
通过查看靶机页面的js代码,我们知道实现sha1加密的是sha1.js这个文件,我们将它下载下来。
复制phantomJS模板代码jsEncrypter/js/jsEncrypter_base.js文件,改名为jsEncrypter_sha1.js。
在脚本中加载sha1.js,然后在js_encrypt函数