### 简要描述:
maccms8 由于涉及缺陷可以再系统内部随意创建文件目录(开启文件缓存!!!!!!)
### 详细说明:
今天在查看苹果cms的时候发现一个任意创建文件目录的代码,本想着可以任意创建文件,但是由于对于文件各方面的过滤,还有一些目录遍历方面的过滤,只能审计到此,啥也不说了,直接看代码
index.php(41-42):
```
$tpl->ifex();
setPageCache($tpl->P['cp'],$tpl->P['cn'],$tpl->H);
$tpl->run();
echo $tpl->H;
```
setPageCache这个函数功能就是把页面内容缓存起来,那么我们进入到缓存的函数里面查看
```
function setPageCache($cp,$cn,$cv)
{
if($GLOBALS['MAC']['app']['dynamiccache'] ==0){ return false; }
$cf = MAC_ROOT.'/cache/'.$cp.'/'.$cn.'.html';
$path = dirname($cf);
mkdirs($path);
@fwrite(fopen($cf,'wb'),$cv);
}
```
这时候我们看到了 这里有一个mkdirs($path),那我们可不可以在cache底下随意穿件我们认为的文件名,由于苹果cms的请求机制都是伪静态的,而且与$cp和$cn相关的地方都进行了初始化,或者说是进行了转移,那么我们是否可以找到一个部队$cp做任何处理的请求呢,经过一番苦苦寻觅,如下:
module/comment.php的save函数存在这样的可能
```
elseif($method=='save')
{
$c_vid = intval(be("all", "vid"));
$c_name = be("all", "c_name");
$c_type = intval(be("all", "aid"));
$c_content = be("all", "c_content");
$c_code = be("all","c_code");
if($c_type>=16 && $c_type<=18){
$c_type=16;
}
if (isN($c_name) || isN($c_content)){ echo '请输入昵称和内容'; exit; }
//if ($MAC['other']['commentverify']==1 && $_SESSION["code_comment"] != $c_code){ echo '验证码错误'; exit; }
if (getTimeSpan("last_commenttime") < $MAC['other']['commenttime']){ echo '请不要频繁操作';exit; }
$pattern = '/[^\x00-\x80]/';
if(!preg_match($pattern,$c_content)){
echo '内容必须包含中文,请重新输入!';exit;
}
$c_name = badFilter($c_name);
$c_content = badFilter($c_content);
$c_ip = ip2long(getIP());
$c_time = time();
```
发现没有进行任何处理,这里我们注释掉验证码检测部分(之后输入验证码,截获发出去就行)
url:
http://192.168.10.70/maccms8_mfb_/maccms8_mfb/index.php?m=comment-save-cp-testdir-cn-a%2500sdasda
post_data:
c_content=请输111&c_name=2222&c_code=xxxx
如图所示:
[<img src="https://images.seebug.org/upload/201406/291829063e4b5dfffee832d74b8c4b7204f5b507.png" alt="8.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/291829063e4b5dfffee832d74b8c4b7204f5b507.png)
下来我们去cache文件夹底下查看:
[<img src="https://images.seebug.org/upload/201406/29183211b822348df42f5329357bfd300354dd5d.png" alt="9.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/29183211b822348df42f5329357bfd300354dd5d.png)
看似危害不大,我们猜想一下,如果页面有一个反射型xss,那么该反射性就会被缓存到cache里面,转白成为了真真正正的存储型,而且 无限制的创建文件
### 漏洞证明:
暂无评论