登录口JS前端加密绕过-jsEncrypter工具

概述

渗透测试过程中遇到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函数中实现调用加密函数对传入的payload进行加密处理,即可。

把下载下来的sha1.js 文件和我们的jsEncrypter_sha1.js放在同一个目录下

在这里插入图片描述

附jsEncrypter_sha1.js源码:

var webserver = require('webserver');
server = webserver.create();

var host = '127.0.0.1';
var port = '1664';

// 加载实现加密算法的js脚本
var wasSuccessful = phantom.injectJs('sha1.js');/*引入实现加密的js文件*/

// 处理函数
function js_encrypt(payload){
    
    
	var newpayload;
	/**********在这里编写调用加密函数进行加密的代码************/
	newpayload = hex_sha1(payload);
	/****************************************************/
	return newpayload;
}

if(wasSuccessful){
    
    
	console.log("[*] load js successful");
	console.log("[!] ^_^");
	console.log("[*] jsEncrypterJS start!");
	console.log("[+] address: http://"+host+":"+port);
}else{
    
    
	console.log('[*] load js fail!');
}

var service = server.listen(host+':'+port,function(request, response){
    
    
	if(request.method == 'POST'){
    
    
		var payload = request.post['payload'];
        var encrypt_payload = js_encrypt(payload); 
        console.log('[+] ' + payload + ':' + encrypt_payload);
		response.statusCode = 200;
  		response.write(encrypt_payload.toString());
        response.close();
	}else{
    
    
		  response.statusCode = 200;
  		  response.write("^_^\n\rhello jsEncrypt!");
          response.close();
	}
});

运行

命令:phantomjs.exe jsEncrypter_sha1.js

在这里插入图片描述
开始抓包爆破

在这里插入图片描述

选择sha1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后爆破就可以了

在这里插入图片描述

在这里插入图片描述

快速定位前端加密的方法

这里贴一个大佬的链接

猜你喜欢

转载自blog.csdn.net/wo41ge/article/details/113985621