当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-083538

漏洞标题:07073登录加密设计不当成为了摆设

相关厂商:07073.com

漏洞作者: Ted

提交时间:2014-11-17 12:08

修复时间:2015-01-01 12:10

公开时间:2015-01-01 12:10

漏洞类型:账户体系控制不严

危害等级:低

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-11-17: 细节已通知厂商并且等待厂商处理中
2014-11-17: 厂商已经确认,细节仅向厂商公开
2014-11-27: 细节向核心白帽子及相关领域专家公开
2014-12-07: 细节向普通白帽子公开
2014-12-17: 细节向实习白帽子公开
2015-01-01: 细节向公众公开

简要描述:

登录进行了加密处理,但同时解密js也包含在其中。分析后不难发现解密代码,如无它用介意删除处理,另外期望可以获得一枚wooyun邀请码。谢谢

详细说明:

把js代码提出出来,自己实现了加密解密的函数测试。

漏洞证明:

String.prototype.replaceAll = function(s1, s2) {
var demo = this;
while (demo.indexOf(s1) != -1) demo = demo.replace(s1, s2);
return demo;
}
function Enc() {
_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
this.encode = function(input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = _utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
}
output = output.replaceAll('=', '_');
output = output.replaceAll('+', '.');
output = output.replaceAll('/', '-');
return output;
}
this.decode = function(input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = _keyStr.indexOf(input.charAt(i++));
enc2 = _keyStr.indexOf(input.charAt(i++));
enc3 = _keyStr.indexOf(input.charAt(i++));
enc4 = _keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = _utf8_decode(output);
return output;
}
_utf8_encode = function(string) {
string = string.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
_utf8_decode = function(utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while (i < utftext.length) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
} else if ((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i + 1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
} else {
c2 = utftext.charCodeAt(i + 1);
c3 = utftext.charCodeAt(i + 2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
}
function encode(str){
e = new Enc();
return e.encode(str);
}
function decode(str){
e = new Enc();
return e.decode(str);
}
alert(encode("lovewooyun"));
alert(decode(encode("lovewooyun")));


代码实行结果

E61AF427-8D3F-4BC8-B5CB-EE26E312F39B.png


8BB514E0-0A2C-479B-B0C5-A8CD802B3945.png


修复方案:

介意删除decode

版权声明:转载请注明来源 Ted@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-11-17 13:31

厂商回复:

谢谢,很细心;没有wooyun邀请码;我们可以提供小礼物,以表感谢。

最新状态:

暂无