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

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

缺陷编号: WooYun-2014-71985

漏洞标题: 蝉知企业门户系统 v2.5 前台getshell

相关厂商: chanzhi.org

漏洞作者: roker

提交时间: 2014-08-12 09:31

公开时间: 2014-11-10 09:32

漏洞类型: 设计缺陷/逻辑错误

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 无

3人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-08-12: 细节已通知厂商并且等待厂商处理中
2014-08-12: 厂商已经确认,细节仅向厂商公开
2014-08-15: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-10-06: 细节向核心白帽子及相关领域专家公开
2014-10-16: 细节向普通白帽子公开
2014-10-26: 细节向实习白帽子公开
2014-11-10: 细节向公众公开

简要描述:

rt。

详细说明:

看到

module/file/control.php

code 区域
public function ajaxUpload($uid)
{
$file = $this->file->getUpload('imgFile');
$file = $file[0];
if($file)
{
if(!$this->file->checkSavePath()) $this->send(array('error' => 1, 'message' => $this->lang->file->errorUnwritable));
move_uploaded_file($file['tmpname'], $this->file->savePath . $file['pathname']);

if(in_array(strtolower($file['extension']), $this->config->file->imageExtensions) !== false)
{
$this->file->compressImage($this->file->savePath . $file['pathname']);
$imageSize = $this->file->getImageSize($this->file->savePath . $file['pathname']);
$file['width'] = $imageSize['width'];
$file['height'] = $imageSize['height'];
}
$url = $this->file->webPath . $file['pathname'];

$file['addedBy'] = $this->app->user->account;
$file['addedDate'] = helper::now();
$file['editor'] = 1;
unset($file['tmpname']);
$this->dao->insert(TABLE_FILE)->data($file)->exec();

$_SESSION['album'][$uid][] = $this->dao->lastInsertID();

die(json_encode(array('error' => 0, 'url' => $url)));
}
}



这个上传文件的

跟到

code 区域
public function getUpload($htmlTagName = 'files')
{
$files = array();
if(!isset($_FILES[$htmlTagName])) return $files;
/* The tag if an array. */
if(is_array($_FILES[$htmlTagName]['name']))
{
extract($_FILES[$htmlTagName]);
foreach($name as $id => $filename)
{
if(empty($filename)) continue;
$file['extension'] = $this->getExtension($filename);





继续跟进 getExtension函数

code 区域
public function getExtension($filename)
{
$extension = pathinfo($filename, PATHINFO_EXTENSION);
if(empty($extension)) return 'txt';
if(strpos($this->config->file->dangers, strtolower($extension)) !== false) return 'txt';
return $extension;
}



dangers 的值是

code 区域
$config->file->dangers = 'php,jsp,py,rb,asp,'; // Dangerous file types.



if(strpos($this->config->file->dangers, strtolower($extension)) !== false) return 'txt'

这句话逻辑有点问题,应该把strpos的两个参数位置替换下,

例如 我提交 a.php+空格的话 就能 绕过了

1.jpg



2.jpg



漏洞证明:

1.jpg



2.jpg

修复方案:

上面写了

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-08-12 16:58

厂商回复:

已经确认,会影响windows服务器的用户。近期会发布新版本解决这个问题。

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

登录后才能发表评论,请先 登录