记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

phpcms_v9.3.2某管理模块逻辑校验漏洞

2013-05-21 12:05

在文件\modules\sms\sms.php中:

class sms extends admin { function __construct() { $this->log_db = pc_base::load_model('sms_report_model'); $this->module_db = pc_base::load_model('module_model'); $this->member_db = pc_base::load_model('member_model'); //获取短信平台配置信息 $siteid = get_siteid(); $this->sms_setting_arr = getcache('sms'); if(!empty($this->sms_setting_arr[$siteid])) { $this->sms_setting = $this->sms_setting_arr[$siteid]; } else { $this->sms_setting = array('userid'=>'', 'productid'=>'', 'sms_key'=>''); } //初始化smsapi pc_base::load_app_class('smsapi', '', 0); $this->smsapi = new smsapi($this->sms_setting['userid'], $this->sms_setting['productid'], $this->sms_setting['sms_key']); }

 

 

类sms作为子类,类admin作为父类。而phpcms的后台功能权限校验是放在父类admin的构造函数中,但是子类sms在继承父类admin后,在sms的构造函数function __construct()中并没有调用父类的构造函数,即sms该类的没有任何权限校验。导致可以直接使用该模块的管理功能。

与其他模块\modules\tag\search_admin.php对比:

class search_admin extends admin { function __construct() { parent::__construct(); //父类admin的构造函数,有权限校验功能 $this->siteid = $this->get_siteid(); $this->db = pc_base::load_model('search_model'); $this->module_db = pc_base::load_model('module_model'); $this->type_db = pc_base::load_model('type_model'); }


 

对比sms类的构造函数中缺少了调用父类的构造函数parent::__construct();

而phpcms的管理权限校验功能放在父类admin的构造函数中

漏洞证明:

构造数据POST,可以直接修改sms模块的配置信息

localhost/index.php?m=sms&c=sms&a=setting

修复方案:

增加缺失的构造函数


知识来源: www.hackqing.com/index.asp?FoxNews=933.html

阅读:84371 | 评论:0 | 标签:cms 漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“phpcms_v9.3.2某管理模块逻辑校验漏洞”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云