您的位置 » 首页 » 代码审计,实用工具 » 代码审计:phpcms_v9.3.2某管理模块逻辑校验漏洞

代码审计:phpcms_v9.3.2某管理模块逻辑校验漏洞

发表于4年前 | 作者: seay | 分类: 代码审计, 实用工具 | 孵化于:2013年05月20日 | 文章热度:3,284 次 全屏阅读

显示不全请点击全屏阅读

在文件\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

修复方案:

增加缺失的构造函数

 

作者: Code_Sec

Tags:

phpcmsv9漏洞, 代码审计,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡


来自 Seay互联网安全博客
本文地址:http://www.cnseay.com/2875/
文章版权说明请看置顶文章,尊重作者,转载请以链接形式标明原文地址

马上分享给你的朋友吧~

发表评论

你的大名(必填)

你的邮箱(必填)

评论内容(必填)