网站地图    收藏   

主页 > 后端 > 网站安全 >

maccms8由于涉及缺陷可以再系统内部随意创建文件

来源:自学PHP网    时间:2015-04-16 23:15 作者: 阅读:

[导读] maccms8 由于涉及缺陷可以再系统内部随意创建文件目录(开启文件缓存!!!!!!)今天在查看苹果cms的时候发现一个任意创建文件目录的代码,本想着可以任意创建文件,但是由于对...

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



如图所示:
 

8.png





下来我们去cache文件夹底下查看:


 

9.png





看似危害不大,我们猜想一下,如果页面有一个反射型xss,那么该反射性就会被缓存到cache里面,转白成为了真真正正的存储型,而且 无限制的创建文件

修复方案:

对不适用到cp的地方做初始化

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论