evoArticles网站管理系统任意文件上传漏洞
影响版本:
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/