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

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

缺陷编号:wooyun-2014-088043

漏洞标题:phpems在线模拟考试系统 getshell

相关厂商:phpems

漏洞作者: Royal.

提交时间: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.@乌云


漏洞回应

厂商回应:

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