一、详细说明:
登录部分通过noPermiss(js)
http://347.kf.ieodopen.qq.com/admin/js/index.js?v=20121007
因为*.kf.ieodopen.qq.com域名开通的数字代表应用编号 所以我认为这属于框架性漏洞例如1.kf.ieodopen.qq.com也存在此漏洞:)
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
|
kfadmin.checkLogin = function() {
if (top.kfadmin.isLogin == true) return;
top.kfadmin.isLogin = “on”;
var loginCallback = new Callback(“login”);
loginCallback.deal = function() {
$(“#pdtName”, top.kfadmin.headerFrameDoc).html(this.result.obj.sOfferName);
$(“#pdtName”, top.kfadmin.headerFrameDoc)[0].title = this.result.obj.sOfferName;
if (~~this.result.obj.isLogin == 1) {
top.document.getElementById(“total_frame”).rows = “80,*”;
top.kfadmin.isLogin = true;
top.kfadmin.sUin = this.result.obj.sUin;
$(“#spnLogout”, kfadmin.headerFrameDoc).html(“您好!” + this.result.obj.sNickName + “(“ + this.result.obj.sUin + “)”);
$(“#pLogin”, top.kfadmin.headerFrameDoc).hide();
$(“#pLogout”, kfadmin.headerFrameDoc).show();
<strong> if (~~this.result.obj.noPermiss == 1) {</strong>
alert(“对不起,您没有操作后台的权限!”);
top.window.location.href = “/”;
top.kfadmin.noPermiss = true;
return false;
}
} else {
top.kfadmin.isLogin = false;
$(“#pLogout”, kfadmin.headerFrameDoc).hide();
$(“#pLogin”, top.kfadmin.headerFrameDoc).show();
}
}
|
使用Burp修改noPermiss =0 可以绕过js判断登录
二、漏洞证明:
三、修复方案:
使用服务器对登录进行判断
ps:虽然上面的漏洞可以绕进后台但后面做操作的时候服务器还是会进行判断 所以腾讯安全应急响应中心给予忽略操作 请以后不要提交这样的漏洞省的麻烦人家验证(当然这只是对我说的):)
漏洞名称:腾讯客服开放平台 xss
一、详细说明:
由于结合上个漏洞可绕过登录进行操作
由于绕过的权限还会在服务器再次判断所有没有发布权限
但确实存在储存性XSS 如果拿到正确的帐号密码可发布存在储存性XSS的公告
请评分者适当加高分值谢谢
二、漏洞证明:
三、修复方案:
过滤输入输出
ps:此漏洞因没有权限发布出去所以腾讯应急响应中心给予忽略 表示只能自己弹自己?请大家以后不要提交这样的漏洞省的麻烦人家验证(当然这只是对我说的):)
附属漏洞一枚:
对于第一个漏洞我第二天测试的时候好像进行了修复操作参数noPermiss从返回的json里消失了
但是他的js还有一个判断就是isLogin参数
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
|
kfadmin.checkLogin = function() {
if (top.kfadmin.isLogin == true) return;
top.kfadmin.isLogin = “on”;
var loginCallback = new Callback(“login”);
loginCallback.deal = function() {
$(“#pdtName”, top.kfadmin.headerFrameDoc).html(this.result.obj.sOfferName);
$(“#pdtName”, top.kfadmin.headerFrameDoc)[0].title = this.result.obj.sOfferName;
<strong> if (~~this.result.obj.isLogin == 1) {</strong>
top.document.getElementById(“total_frame”).rows = “80,*”;
top.kfadmin.isLogin = true;
top.kfadmin.sUin = this.result.obj.sUin;
$(“#spnLogout”, kfadmin.headerFrameDoc).html(“您好!” + this.result.obj.sNickName + “(“ + this.result.obj.sUin + “)”);
$(“#pLogin”, top.kfadmin.headerFrameDoc).hide();
$(“#pLogout”, kfadmin.headerFrameDoc).show();
if (~~this.result.obj.noPermiss == 1) {
alert(“对不起,您没有操作后台的权限!”);
top.window.location.href = “/”;
top.kfadmin.noPermiss = true;
return false;
}
} else {
top.kfadmin.isLogin = false;
$(“#pLogout”, kfadmin.headerFrameDoc).hide();
$(“#pLogin”, top.kfadmin.headerFrameDoc).show();
}
}
|
正常的返回json是
{“resultcode”:0,”resultinfo”:{“errmsg”:”/u4f60/u8fd8/u6ca1/u6709/u767b/u5f55/uff0c/u8bf7/u5148/u767b/u5f55″,”list”:[],”obj”:{“isLogin”:0,”sUin”:”0″,”sNickName”:””,”sLogo”:””,”sOfferName”:”/u672a
/u77e5/u5e94/u7528″,”isOfferExist”:”1″}}}
我修改为
{“resultcode”:0,”resultinfo”:{“errmsg”:””,”list”:[],”obj”:{“isLogin”:1,”sUin”:”365297318″,”sNickName”:”MythHack”,”sLogo”:””,”sOfferName”:””,”isOfferExist”:”1″}}}
结果:
ps:这个是在腾讯应急响应中心人员在测试第一个漏洞的时候没成功联系我 然后我发现那个参数没有了但是有islogin 因为昨天我看了那个js所以我记得这个也是里面的一个判断条件所以再次绕过:)
原文:http://www.secbig.com/?p=2204
本文由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处!
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有
联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号