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

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

缺陷编号:wooyun-2012-015249

漏洞标题:某CMS逻辑处理不当导致任意文件上传

相关厂商:www.xyjys.com.cn

漏洞作者: RedFree

提交时间:2012-11-25 16:46

修复时间:2013-01-09 16:46

公开时间:2013-01-09 16:46

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

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-11-25: 细节已通知厂商并且等待厂商处理中
2012-11-28: 厂商已经确认,细节仅向厂商公开
2012-12-08: 细节向核心白帽子及相关领域专家公开
2012-12-18: 细节向普通白帽子公开
2012-12-28: 细节向实习白帽子公开
2013-01-09: 细节向公众公开

简要描述:

某CMS文件上传处理流程不当,导致用户可以控制文件名,从而上传任意文件。

详细说明:

首先看其上传页面:

<html>
<head>
<title>图片上传</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript">
function check(){
if(document.forms[0].file.value=="")
{
alert("请选择图片路径!");
document.forms[0].file.focus();
return false;
}
return true;
}
</script>
<style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: none;
}
a:active {
text-decoration: none;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style></head>
<body>
<table width="296" height="38" border="0" align="center" cellpadding="0" cellspacing="0" class="t12">
<form action="upload_ok.asp" method="post" enctype="multipart/form-data">
<tr>
<td align="center"><br>
<strong>图片路径:</strong>
<input type="file" name="file">
<br>
<br>
<input type="submit" name="Submit" value=" 上 传 " onClick="return check();">
<input name="textField" type="hidden" id="textField" value="<%=Trim(request("textField"))%>">
<input name="filename" type="hidden" id="filename" value="<%=Trim(Request("imgname"))%>">
<input name="action" type="hidden" id="action" value="<%=Trim(Request("action"))%>">
<input name="imgtype" type="hidden" id="imgtype" value="<%=Request("imgtype")%>"> </td>
</tr>
</form>
</table>
</body>
</html>


传递给upload_ok.asp处理,看upload_ok.asp源码:

on error goto 0 '关闭on error resume next
Dim desFolder:desFolder=server.mappath("../pic")
Dim rs,filename,ext,imgname,imgname2,Y,M,D,Shuoming
ext = "jpg"
if Trim(ourRequest.Form("filename"))="" then
Y=Year(Now)
M=Month(Now)
D=Day(Now)
H=Hour(Now)
M=Minute(Now)
S=Second(Now)
imgname=Y*1000000000+M*10000000+D*100000+H*10000+M*1000+S*100+1
Set rs=server.CreateObject("ADODB.Recordset")
rs.open"select top 1 * from pic where left(imgname,8)='"&left(imgname,8)&"' order by imgname desc",conn,1,1
if Not (rs.Eof And rs.Bof) Then
imgname2=CCur(rs("imgname"))+1
Else
imgname2=imgname
End If
filename=imgname2&".jpg"
Else
filename=Trim(ourRequest.Form("filename"))
End If
Call ourRequest.File(0).SaveAs(desFolder, filename)


假如文件名为空,则以与日期时间相关+.jpg后缀来命名该文件,如果文件名不为空,则以该文件名命名这个文件。
再来看一下执行上传页面后的源文件:

<table width="296" height="38" border="0" align="center" cellpadding="0" cellspacing="0" class="t12">
<form action="upload_ok.asp" method="post" enctype="multipart/form-data">
<tr>
<td align="center"><br>
<strong>图片路径:</strong>
<input type="file" name="file">
<br>
<br>
<input type="submit" name="Submit" value=" 上 传 " onClick="return check();">
<input name="textField" type="hidden" id="textField" value="bigpics">
<input name="filename" type="hidden" id="filename" value="">
<input name="action" type="hidden" id="action" value="add">
<input name="imgtype" type="hidden" id="imgtype" value="bigpics"> </td>
</tr>
</form>
</table>


filename变量始终为空,所以默认所有文件都以日期时间+.jpg后缀处理。

漏洞证明:

我们将上传页面源文件另存为html文件,改form action="http://XXXX.XXXX/upload_ok.asp"
改filename变量的value="one.asp",打开本地上传页面,将一句话木马保存为.jpg格式后以本地页面上传,木马就被上传到了Pic目录下,文件名为one.asp.

a.jpg


b.jpg

修复方案:

修改上传页面用户验证;
修改上传文件文件名处理流程;
修改文件上传目录执行权限;

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:13

确认时间:2012-11-28 21:38

厂商回复:

虽然漏洞说明很细致,但CNVD未找到CMS名称及相关案例进行复现,已发站内信给RedFree,商请提供协助。暂挂在CNVD处置队例中,为避免信息泄露,先行确认。
按完全影响机密性,部分影响完整性、可用性进评分,基本危害评分8.97,按通用CMS预先估计影响系数1.4,综合rank=8.97*1.4=12.588

最新状态:

暂无