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

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

缺陷编号:wooyun-2012-09415

漏洞标题:韩国某web编辑器0day

相关厂商:韩国

漏洞作者: ca3tie1

提交时间:2012-07-10 13:53

修复时间:2012-07-10 13:53

公开时间:2012-07-10 13:53

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

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

该编辑器在韩国使用比较广泛,www.hani.co.kr、www.kbs.co.kr、www.joinsmsn.com中都有使用。由于涉及大大站,具体程序名称就不便直接发布了。

详细说明:

主要问题在于上传类在对文件扩展名做验证的时候不严谨导致攻击者可上传PHP。By Ca3tie1
先看上传函数:

if ($file->getFileSize("Filedata") > 0) {
$save_name = $req->get("save_name");
if ($save_name == null || $save_name == "")
$save_name = $file -> nameUnique('ph_');
$file_name = $file->getFileName("Filedata");
if ($file -> isUploadable($file_name)) //扩展名的验证,如果验证不过则扩展名定死为tmp。
$file_ext = $file->name2Ext($file_name); //取出扩展名
else
$file_ext = 'tmp';
$save_name = uniqid(date('ymd_'));
$file_server = $file->file_Copy("Filedata", $savearea.$save_name.'.'.$file_ext);
}


跟进isUploadable函数:

function isUploadable($fileName) {
return !(rainUtil::find($this->forbidden_extension_patten, $fileName));
}
//这里涉及到forbidden_extension_patten,定义为:var $forbidden_extension_patten = '(html|htm|php|php3|cgi|phtml|shtml|jsp|asp|exe|com|dll)$';
再继续跟进find函数:
function find($patternStr, $str, $reg = Array()) {
return (ereg($patternStr,$str, $reg)) ? true:false; //问题就在这里了,ereg函数是区分大小写的!只要我们提交的文件名的扩展名为pHp即可绕过此处验证。
}


绕过扩展名验证后继续看上传函数中的取出扩展名的代码:

$file_ext = $file->name2Ext($file_name);


我们继续跟进name2Ext函数:

function name2Ext($fileName) {
$tar_file_extension = "";
if ($fileName != "") {
if (ereg("\.([^\.]+)$", $fileName, $tmp_reg))
$tar_file_extension = substr(strtolower($tmp_reg[1]), 0, 4); //最终会将文件名中的扩展名转换成小写!!
else
$tar_file_extension = "tmp";
} else
$tar_file_extension = "";
return $tar_file_extension;
}


完美绕过,这是韩国棒子写的程序,当然和国内的没法比。若分析有误望指出!拜谢!这个程序有多个版本,并且每个版本都有不同的漏洞,任意文件下载、突破目录限制上传等等!

漏洞证明:



修复方案:

你懂的~!!!

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


漏洞回应

厂商回应:

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

漏洞Rank:8 (WooYun评价)