新闻资讯
   (今日关注·网络安全审查)新闻链接:为了咱们的网络安全,国家放过哪些大招?
   2017(第六届)中国信息化和工业化融合发展高峰论坛即将举办
   构建安全清朗的网络环境——我国网络社会治理能力持续提升
   (今日关注·网络安全审查)新闻链接:为了咱们的网络安全,国家放过哪些大招?
   万余网友吐槽360弹窗恐吓欺骗用户
   黑客组织要发动全球攻势
漏洞公告 
   记事狗微博二次注射漏洞
   苹果再遇数据安全挑战 黑客目标直指用户ID
   nginx爆整数溢出漏洞
   日媒:朝鲜培育数千名“黑客精英” 加强“网络攻击”
   谷歌举办黑客大会探讨谷歌眼镜特性
   分享黑客最常利用的那些漏洞
您的位置: 首页 >> 新闻资讯/漏洞公告
详细内容
韩国某web编辑器0day漏洞分析
2012-7-16 9:12:13  

漏洞作者: ca3tie1

提交时间: 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;
}


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

WEB编辑器漏洞