当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-055794

漏洞标题:长江网某云平台后台管理弱口令+上传漏洞

相关厂商:长江网

漏洞作者: l0u1s

提交时间:2014-04-07 12:15

修复时间:2014-05-22 12:16

公开时间:2014-05-22 12:16

漏洞类型:文件上传导致任意代码执行

危害等级:高

自评Rank:12

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-07: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-05-22: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

长江网某云平台后台管理存在弱口令,登陆后某个上传文件的地方没有进行任何过滤,可直接上传Webshell!

详细说明:

(刚才提交的写得不完整,所以做了一些修改重新提交)
使用Google Hacking语句构造"inurl:filemanage.php",即可找到长江网移动智能报刊信息发布云平台的后台管理页面:
http://cjmb.cjn.cn/cjnadmin_tmp/web/index.php

QQ截图20140406231931.jpg


如果是用域名cjmb.cjn.cn直接在百度和谷歌搜索都会出现管理页面,从百度快照也可看出后台的内容。

QQ截图20140407001905.jpg


QQ截图20140407002058.jpg


QQ截图20140407001924.jpg


但是这里的管理页面还只是一个临时库,从搜索结果可看出有cjn这个用户,密码解不出来,用admin也猜解不出,不过,既然有tmp就应该有正式库,所以就尝试了
http://cjmb.cjn.cn/cjnadmin/web/index.php
再尝试了一下admin / 111111,竟然登陆成功,弱口令!

QQ截图20140406232734.jpg


QQ截图20140406232854.jpg


然后在后台找到一个“原版原样”栏目,里面有个多媒体文件管理,尝试上传shell,在images和mp3中都上传失败后,在mp4文件夹中上传竟然成功了!用菜刀一连,也成功了!

QQ截图20140407004203.jpg


QQ截图20140406233512.jpg


并且能执行命令,虽然只是apache权限,但是可以进一步提权,我就不继续了,赶紧上报!

QQ截图20140406233739.jpg


漏洞证明:

为了进一步确认是否此漏洞的存在,查看相关页面的代码:

<?php
...
if($act=='upthis'){
$sid = Frame_Input_Adapter::Get('sid');
$typeid= Frame_Input_Adapter::Get('typeid');
if($typeid==5)
{
$ftype=array('application/octet-stream');//允许上传的文件类型
}
elseif ($typeid==4)
{
$ftype=array('audio/mpeg');//允许上传的文件类型
}
else
{
$ftype=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png');//允许上传的文件类型
}

if(is_uploaded_file($_FILES["upfile"]["tmp_name"]))
{
$oldfile0=$_FILES['upfile']['name'];//获取文件上传之前的全名
if($typeid==5 || $typeid==4)
{
$maxsize= 20480000;
}
else
{
$maxsize= 2048000;
}
if ($_FILES["upfile"]["size"] < $maxsize)
{
if($_FILES["upfile"]["error"] > 0) die('图片上传错误,请重新上传!<a href="filemanage.php?typeid='.$typeid.'&sid='.$sid.'&flag=0">返回</a>');
else
{
if(in_array($_FILES['upfile']['type'],$ftype))//判断文件是否是允许的类型
{
$checkname="name='".$oldfile0."'";
Hanwang_Filemanage_Dao::Instance();
$result=Hanwang_Filemanage_Dao::Get($checkname,0,1);
if($result[0]['name'])
{
die('你上传的名字已经存在,请重新上传内!<a href="filemanage.php?typeid='.$typeid.'&sid='.$sid.'&flag=0">返回</a>');
}
else
{
if($typeid==5)
{
move_uploaded_file($_FILES["upfile"]["tmp_name"],PUBLISHED_IMG."userfiles/mp4/".$_FILES["upfile"]["name"]);
}
elseif ($typeid==4)
{
move_uploaded_file($_FILES["upfile"]["tmp_name"],PUBLISHED_IMG."userfiles/mp3/".$_FILES["upfile"]["name"]);
}
else
{
move_uploaded_file($_FILES["upfile"]["tmp_name"],PUBLISHED_IMG."userfiles/images/".$_FILES["upfile"]["name"]);
}

$opt=array(
'name'=>$_FILES["upfile"]["name"],
'url'=>$_FILES["upfile"]["name"],
'type'=>$typeid,
'lastmodify'=>date('Y-m-d H:i:s')
);
Hanwang_Filemanage_Dao::Instance();
Hanwang_Filemanage_Dao::Add($opt);
echo '<script>window.location="filemanage.php?typeid='.$typeid.'&sid='.$sid.'&flag=0";</script>';
}
}
}
}
else die('你上传的图片过大,请重新上传!<a href="filemanage.php?typeid='.$typeid.'&sid='.$sid.'&flag=0">返回</a>');
}
}
...
?>


上面是filemanage.php页面的上传功能的相关代码,可以看出只对images和mp3两类文件类型的后缀名进行了白名单过滤,但是却没有对mp4文件类型进行任何过滤,不知为何。

QQ截图20140406234702.jpg

修复方案:

首先,修改后台管理的登陆密码,把密码设得复杂些,后来,在上传mp4文件类型处进行过滤。

版权声明:转载请注明来源 l0u1s@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝