PHPCMS V9 (plugin.php)本地文件包含漏洞hellxman_网络安全技术软件的技术博客_51CTO博客

PHPCMS V9 (plugin.php)本地文件包含漏洞hellxman

PHPCMS V9 (plugin.php)本地文件包含漏洞hellxman

转载

wordman 博主文章分类:安全文章

文章标签 职场 用户 action 休闲 影响 文章分类 PHP 后端开发

影响版本:

PHPCMS V9.1.8 (20111014)

漏洞描述:

由于文件/plugin.php对于用户提交的变量未过滤,导致本地文件包含漏洞的产生。相关代码如下:文件plugin.phpif(isset($_GET['id'])) {	list($identification, $filename,$action) = explode('-', $_GET['id']);	$filename = !empty($filename) ? $filename : $identification;	$action = !empty($action) ? $action : 'init';}$cache = getcache($identification,'plugins');变量$identification的值来源于$_GET['id'],并进入函数getcache中Getcache函数在文件/ phpcms/libs/functions/ global.func.php中function getcache($name, $filepath='', $type='file', $config='') {	pc_base::load_sys_class('cache_factory','',0);	if($config) {		$cacheconfig = pc_base::load_config('cache');		$cache = cache_factory::get_instance($cacheconfig)->get_cache($config);	} else {		$cache = cache_factory::get_instance()->get_cache($type);	}	return $cache->get($name, '', '', $filepath);}$cache->get()在文件/phpcms/libs/classes/cache_file.class.phppublic function get($name, $setting = '', $type = 'data', $module = ROUTE_M) {		$this->get_setting($setting);		if(empty($type)) $type = 'data';		if(empty($module)) $module = ROUTE_M;		$filepath = CACHE_PATH.'caches_'.$module.'/caches_'.$type.'/';		$filename = $name.$this->_setting['suf'];		if (!file_exists($filepath.$filename)) {			return false;		} else {		    if($this->_setting['type'] == 'array') {		    	$data = @require($filepath.$filename);最终$_GET['id']变量变为$filename的一部分

测试方法:

本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
  1.  
  2. http://hellxman.blog.51cto.com/phpcms/plugin.php?id=可控文件名-1-1:
  • 收藏
  • 评论
  • 举报
提问和评论都可以,用心的回复会被更多人看到 评论
发布评论
相关文章

举报文章

请选择举报类型

内容侵权 涉嫌营销 内容抄袭 违法信息 其他

具体原因

包含不真实信息 涉及个人隐私

补充说明

0/200

上传截图

格式支持JPEG/PNG/JPG,图片不超过1.9M

已经收到您得举报信息,我们会尽快审核