查看: 14301|回复: 3

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

[复制链接]
发表于 2013-8-28 09:34:34 | 显示全部楼层 |阅读模式
在文件\modules\sms\sms.php中:

  1. class sms extends admin {

  2.         function __construct() {
  3.                 $this->log_db = pc_base::load_model('sms_report_model');
  4.                 $this->module_db = pc_base::load_model('module_model');
  5.                 $this->member_db = pc_base::load_model('member_model');
  6.                
  7.                 //获取短信平台配置信息
  8.                 $siteid = get_siteid();
  9.                 $this->sms_setting_arr = getcache('sms');
  10.                 if(!empty($this->sms_setting_arr[$siteid])) {
  11.                         $this->sms_setting = $this->sms_setting_arr[$siteid];
  12.                 } else {
  13.                         $this->sms_setting = array('userid'=>'', 'productid'=>'', 'sms_key'=>'');
  14.                 }
  15.                
  16.                 //初始化smsapi
  17.                 pc_base::load_app_class('smsapi', '', 0);
  18.                 $this->smsapi = new smsapi($this->sms_setting['userid'], $this->sms_setting['productid'], $this->sms_setting['sms_key']);
  19.         }
复制代码
类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
回复

使用道具 举报

发表于 2026-5-21 16:40:01 | 显示全部楼层

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

感谢分享这个漏洞分析,写得非常清晰!确实,子类构造函数没有调用 `parent::__construct()` 导致权限校验缺失,这是很典型的继承漏洞。对比 `search_admin` 的实现,问题一目了然。这个漏洞证明也很简洁,利用起来门槛低,建议官方尽快修复。再次感谢你的贡献!
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层

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

感谢楼主分享这个漏洞细节!分析得很清楚:`sms`类继承自`admin`,但构造函数没调用`parent::__construct()`,导致后台权限校验形同虚设。对比`search_admin`类中显式调用了父类构造函数,差异点一目了然。漏洞证明里直接POST就能改配置,危害性不小。建议官方尽快在`__construct()`里加上`parent::__construct();`,或者检查其他模块是否有类似遗漏。
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层

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

这个漏洞分析得很清晰,sms类缺少 `parent::__construct()` 导致直接跳过了父类的权限校验,确实是个典型的安全疏漏。通过构造POST请求就能修改短信平台配置,威胁性不小。感谢分享细节,修复方案也很明确,加一行构造函数调用就行。这对使用该版本的用户来说是个及时提醒。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-25 13:42 , Processed in 0.050855 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部