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

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

缺陷编号:
漏洞标题:
phpems在线模拟考试系统 getshell
相关厂商:
漏洞作者:
提交时间:
2014-12-25 17:01
修复时间:
2015-03-25 17:02
公开时间:
2015-03-25 17:02
漏洞类型:
文件上传导致任意代码执行
危害等级:
自评Rank:
10
漏洞状态:
未联系到厂商或者厂商积极忽略
漏洞来源:
http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签:
分享漏洞:
4人收藏 收藏
分享漏洞:

>

漏洞详情

披露状态:

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

简要描述:

phpems 最新版本20141103
http://phpems.net/forum/thread-441-1-1.html
上传过滤不严导致任意文件上传。

详细说明:

phpems\app\document\api.php

public function swfupload()
{
$path = 'files/attach/images/content/'.date('Ymd').'/';
$fileurl = $this->files->uploadFile($this->ev->getFile('Filedata'),$path);
if($this->ev->get('imgwidth') || $this->ev->get('imgheight'))
{
if($this->files->thumb($fileurl,$fileurl.'.png',$this->ev->get('imgwidth'),$this->ev->get('imgheight')))
$thumb = $fileurl.'.png';
else
$thumb = $fileurl;
}
else
$thumb = $fileurl;
exit(json_encode(array('thumb' => $thumb)));
}


phpems\lib\ev.cls.php

public function getFile($par)
{
if(isset($this->file[$par]))return $this->file[$par];
else return false;
}


phpems\lib\files.cls.php

public function uploadFile($file,$updir,$sExtension = NULL,$name = NULL)
{
if(!$sExtension)$sExtension = $this->getFileExtName($file['name']);
if(!$name)$name = time().rand(1000,9999);
if(!file_exists($updir))$this->mdir($updir);
$url = $updir.$name.'.'.$sExtension;
if(file_exists($url))unlink($url);
move_uploaded_file( $file['tmp_name'], $url ) ;
if (file_exists($url))
{
$oldumask = umask(0) ;
chmod( $url, 0777 ) ;
umask( $oldumask ) ;
}
return $url;
}


后缀名未做任何检测和限制。
直接上传php文件getshell。

漏洞证明:

1.注册账号,上传头像抓包。

1.png


2.官方demo测试成功。

2.png

修复方案:

过滤。

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


>

漏洞回应

厂商回应:

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