利用框架工具:jsEncrypter与phantomjs.exe
脚本与工具安装就不做介绍了,网上都有教程
目标站点登录请求做了password字段进行了加密,同时验证码存在缺陷,这时候好多初级渗透人员看到存在加密方式都会有放弃的想法,这里详细介绍如何利用jsEncrypter分析js加密算法来进行破解加密进行还原
首先通过登录请求进行抓包,可以看到password字段是进行完全加密的验证码也是完全不变的每次都为123456,且不是常规加密算法
F12调出控制台进行下断点分析password加密的过程
首先js它会先去调用赋值的变量
这时候在40行这里password变量会传递到this.digest对象实例,这里我们跟进去看下,这里可以看到他调用到CryptoJS.MD5(password).toString(CryptoJS.enc.Hex)方法中的MD5
继续跟到CryptoJS方法里,这里可以看到主要是调用crypto-js.main.js文件,这个文件是主要进行多次加密的,我们可以不用管,跟回到login.js里,现在已经知道第一层加密是通过CryptoJS.MD5(password).toString(CryptoJS.enc.Hex)进行的
第一层加密完后它会对首先会加密值+#+nonce(nonce变量是验证码的值),然后调用this.encrypt对象实例,跟进这个实例
this.encrypt主要调用了两个方法,这两个方法也是调用crypto-js.main.js文件
var key = CryptoJS.MD5(nonce).toString(CryptoJS.enc.Hex);
var pwd = CryptoJS.AES.encrypt(password, key).toString();
到这里我们就可以分析出来它的一个大概的加密方式,首先调用CryptoJS.MD5(password).toString(CryptoJS.enc.Hex)进行加密,然后把加密值传递给CryptoJS.MD5(nonce).toString(CryptoJS.enc.Hex)进行验证码的加密,加密后再进行CryptoJS.AES.encrypt(password, key).toString() password与验证码加密进行拼接合起来进行加密
逻辑已经分析完毕,现在开始利用jsEncrypter与phantomjs.exe来编写代码来自动生成加密算法
第一步先把crypto-js.main.js文件copy下来,拿来进行赋值用
定义三个加密方法,进行调用输出
引用编写好的加密脚本,然后再调用自定义haid函数进行传输
大功告成,生成测试