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

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

缺陷编号:wooyun-2015-0158353

漏洞标题:金蝶K3财务软件系统任意文件上传demo测试成功

相关厂商:金蝶

漏洞作者: hello

提交时间:2015-12-05 11:35

修复时间:2016-03-03 09:24

公开时间:2016-03-03 09:24

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-12-05: 细节已通知厂商并且等待厂商处理中
2015-12-07: 厂商已经确认,细节仅向厂商公开
2015-12-10: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航
2016-01-31: 细节向核心白帽子及相关领域专家公开
2016-02-10: 细节向普通白帽子公开
2016-02-20: 细节向实习白帽子公开
2016-03-03: 细节向公众公开

简要描述:

最近公司也买了这系统,对系统测试了下发现存在漏洞,官网demo同样存在这漏洞。
财务系统如果对外了被拿权限了确实很麻烦。

详细说明:

漏洞地址

http://**.**.**.**/k3cloud/


漏洞代码如下

public void ProcessRequest(HttpContext context)
{
try
{
context.Response.ContentType = "text/plain";
string physicalPath = context.Request.Headers["filefolder"];
if (string.IsNullOrEmpty(physicalPath))
{
physicalPath = context.Server.MapPath("UploadFiles");
}
else
{
physicalPath = PathUtils.GetPhysicalPath(physicalPath);
}
if (!Directory.Exists(physicalPath))
{
Directory.CreateDirectory(physicalPath);
}
HttpFileCollection files = context.Request.Files;
int count = files.Count;
if (count > 0)
{
for (int i = 0; i < count; i++)
{
HttpPostedFile file = files[i];
if ((file != null) && (file.ContentLength > 0))
{
string filename = physicalPath + "/" + file.FileName;
file.SaveAs(filename);
}
}
context.Response.Write("0");
}
else
{
string str3 = context.Request.Headers["Name"].ToString();
if (string.IsNullOrWhiteSpace(str3))
{
str3 = "null";
}
FileStream stream = new FileStream(physicalPath + "/" + str3, FileMode.Append);
context.Request.InputStream.CopyTo(stream);
stream.Flush();
stream.Close();
context.Response.Write("1");
}
}
catch (Exception exception)
{
context.Response.Write("-1");
throw exception;
}
}


没有对上传文件类型进行判断。

漏洞证明:

随便找了个网站

http://**.**.**.**/k3cloud


9.png


10.png


11.png


官网demo

12.png


13.png


修复方案:

对文件后缀进行判断。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:18

确认时间:2015-12-07 13:25

厂商回复:

感谢对金蝶的关注,已安排相关人员立即修复!

最新状态:

暂无