evoArticles网站管理系统任意文件上传漏洞

来源:岁月联盟 编辑:老鹰 时间:2010-06-03

影响版本:
evoArticles <2.1.3

程序介绍:
evoArticles是一套国外开源的CMS程序

漏洞分析:

在文件index.php中:
switch ($_SERVER['QUERY_STRING'])
{
 case "addimage":
  $content = $art->do_addimage($_GET['for']);    //第35行
......
在文件admin/lib/class_articles.php中:
function do_addimage()       //第1739行
......
if ($_FILES['image']['size'] > 0)       //第1765行
   {
    // valid extension
    $ext = $admin->get_ext(strtolower($_FILES['image']['name']));
    
    //check if extension is valid
    //if (in_array($ext,$valid_extension) == FALSE)
    //{
    $size = getimagesize($_FILES['image']['tmp_name']);  //关键处
    if ($size[0] == 0 || $size[0] == '')
    {
     $content = $admin->warning($evoLANG['invalidtype']);         
     eval("echo("".$page->gettemplate("popup")."");");
     exit;
    }
    
    $time = time();
    $imgurl = $this->upload_dir.$time."_".$_FILES['image']['name'];
 
    @copy($_FILES['image']['tmp_name'], $imgurl);
 
程序只用了getimagesize函数来检查文件类型,可以通过copy图片和php文件的方法突破该函数,上传任意文件类型。

漏洞利用:
http://www.wavdb.com/index.php?addimage

解决方案:
厂商补丁:
EVO-DEV
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.evo-dev.com/products/evoarticles/