富文本编辑器恶意上传漏洞–解决方法
问题描述:借助上传网络图片功能,向asp.net项目中上传可执行那文件。
后台代码原先处理方式:
if (response.StatusCode != HttpStatusCode.OK)
{
State = "Url returns " + response.StatusCode + ", " + response.StatusDescription;
return this;
}
if (response.ContentType.IndexOf("image") == -1)
{
State = "Url is not an image";
return this;
}
只对上传文件名做了控制,如果将上传地址改为:xxxx.jpg?.aspx,最终服务上接收的会变成xxxx.aspx,出现的问题会有:政府网站首页被恶意更改,IP会打开恶意首页等。
解决办法:
修改CrawlerHandler中的Fetch()方法,在中间增加文件后缀名检测。
var fileExtension = Path.GetExtension(ServerUrl);
var allowExtension = new List<string>() { ".docx", ".doc", ".xsl",".xslt",".jpg",".jpeg",".png",".gif"};
if (!allowExtension.Contains(fileExtension.ToLower()))
{
State = "Url is not an image";
return this;
}