漏洞发生在js文件rspFrame.js中的getCurrUserRole()函数中.

首先,函数利用getCurrUserRole_callback回调函数来获取用户信息,rsp_getCookie函数从Cookies里面获取用户名uid与当前用户清单进行对比,如果有,则返回,否则不返回。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function getCurrUserRole(){
jQuery.getJSON('./device.rsp?opt=user&cmd=list', getCurrUserRole_callback);
function getCurrUserRole_callback(userList){
if (userList.result == 0) {
if(userList.list.length > 0){
allCurUserInfo = userList.list;
for (var i = 0; i < userList.list.length; i++){
if(rsp_getCookie("uid") == userList.list[i].uid){
currUserRole = parseInt(userList.list[i].role);
curPwd = userList.list[i].pwd;
}
}
}
}
}
}

但是,这里有个问题,后来发现只要在Cookiesuid存在值就行了,也就是说,在这个文件里面程序没有检查登录状态,而只是简单的检查了是否存在uid这个参数和uid这个参数里面有没有存在值,如下图。所以我们只需要构造一个”Cookies:uid=xxx”就可以访问device.rsp这个文件了。

1