-
-
[转帖格式不符合论坛规定]phpcms_v9.3.2某管理模块逻辑校验漏洞
-
发表于: 2013-5-25 16:55 1069
-
在文件\modules\sms\sms.php中:
1
class sms extends admin {
2
3
function __construct() {
4
$this->log_db = pc_base::load_model('sms_report_model');
5
$this->module_db = pc_base::load_model('module_model');
6
$this->member_db = pc_base::load_model('member_model');
7
8
//获取短信平台配置信息
9
$siteid = get_siteid();
10
$this->sms_setting_arr = getcache('sms');
11
if(!empty($this->sms_setting_arr[$siteid])) {
12
$this->sms_setting = $this->sms_setting_arr[$siteid];
13
} else {
14
$this->sms_setting = array('userid'=>'', 'productid'=>'', 'sms_key'=>'');
15
}
16
17
//初始化smsapi
18
pc_base::load_app_class('smsapi', '', 0);
19
$this->smsapi = new smsapi($this->sms_setting['userid'], $this->sms_setting['productid'], $this->sms_setting['sms_key']);
20
}
类sms作为子类,类admin作为父类。而phpcms的后台功能权限校验是放在父类admin的构造函数中,但是子类sms在继承父类admin后,在sms的构造函数function __construct()中并没有调用父类的构造函数,即sms该类的没有任何权限校验。导致可以直接使用该模块的管理功能。
与其他模块\modules\tag\search_admin.php对比:
1
class search_admin extends admin {
2
function __construct() {
3
parent::__construct(); //父类admin的构造函数,有权限校验功能
4
$this->siteid = $this->get_siteid();
5
$this->db = pc_base::load_model('search_model');
6
$this->module_db = pc_base::load_model('module_model');
7
$this->type_db = pc_base::load_model('type_model');
8
}
对比sms类的构造函数中缺少了调用父类的构造函数parent::__construct();
而phpcms的管理权限校验功能放在父类admin的构造函数中
漏洞证明:
构造数据POST,可以直接修改sms模块的配置信息
1
localhost/index.php?m=sms&c=sms&a=setting
修复方案:
增加缺失的构造函数
作者: Code_Sec
1
class sms extends admin {
2
3
function __construct() {
4
$this->log_db = pc_base::load_model('sms_report_model');
5
$this->module_db = pc_base::load_model('module_model');
6
$this->member_db = pc_base::load_model('member_model');
7
8
//获取短信平台配置信息
9
$siteid = get_siteid();
10
$this->sms_setting_arr = getcache('sms');
11
if(!empty($this->sms_setting_arr[$siteid])) {
12
$this->sms_setting = $this->sms_setting_arr[$siteid];
13
} else {
14
$this->sms_setting = array('userid'=>'', 'productid'=>'', 'sms_key'=>'');
15
}
16
17
//初始化smsapi
18
pc_base::load_app_class('smsapi', '', 0);
19
$this->smsapi = new smsapi($this->sms_setting['userid'], $this->sms_setting['productid'], $this->sms_setting['sms_key']);
20
}
类sms作为子类,类admin作为父类。而phpcms的后台功能权限校验是放在父类admin的构造函数中,但是子类sms在继承父类admin后,在sms的构造函数function __construct()中并没有调用父类的构造函数,即sms该类的没有任何权限校验。导致可以直接使用该模块的管理功能。
与其他模块\modules\tag\search_admin.php对比:
1
class search_admin extends admin {
2
function __construct() {
3
parent::__construct(); //父类admin的构造函数,有权限校验功能
4
$this->siteid = $this->get_siteid();
5
$this->db = pc_base::load_model('search_model');
6
$this->module_db = pc_base::load_model('module_model');
7
$this->type_db = pc_base::load_model('type_model');
8
}
对比sms类的构造函数中缺少了调用父类的构造函数parent::__construct();
而phpcms的管理权限校验功能放在父类admin的构造函数中
漏洞证明:
构造数据POST,可以直接修改sms模块的配置信息
1
localhost/index.php?m=sms&c=sms&a=setting
修复方案:
增加缺失的构造函数
作者: Code_Sec
赞赏
赞赏
雪币:
留言: