最新公布的动易4.03上传漏洞
影响版本: 动易4.03
<%@language=vbscript codepage=936 %>
<%
option explicit
response.buffer=true
Server.ScriptTimeOut=9999999
%>
<%
const upload_type=0 上传方法:0=无惧无组件上传类,1=FSO上传 2=lyfupload,3=aspupload,4=chinaaspupload
dim ChannelID
dim AdminName
dim EnableUploadFile,MaxFileSize,UpFileType,SavePath,SavePath2
dim objUpload,oFile,FormName,strFileName,FileExt
dim ImgWidth,ImgHeight,AlignType
dim EnableUpload
dim arrUpFileType
dim ranNum,i,strJS,msg,dtNow 这些定义上传变量
AdminName=trim(session("AdminName")) 果断seesion值是否正确
UserName=trim(request.Cookies("asp163")("UserName")) 果断cookie
msg=""
FoundErr=false
EnableUpload=false 上面这些定义了,要是seesion和cookie分歧法,就堕落
dtNow=Now()
%>
<%
if AdminName="" and UserName="" then 要是admin和username为空就堕落,要是假的不为空的用户名会怎么样呢,但是上面的要细致
response.Write("请登录后再利用本功能!")
else
select case upload_type
case 0
call upload_0() 利用化境无组件上传类
case else
response.write "本系统未开放插件功能"
response.end
end select
end if
call CloseConn()
%>
<%
sub upload_0() 利用化境无组件上传类
set objUpload=new upfile_class 建立上传对象
objUpload.GetData(104857600) 获得上传数据,限制最大上传100M
if objUpload.err > 0 then 要是堕落
select case objUpload.err
case 1
response.write "请先选择你要上传的文件!"
case 2
response.write "你上传的文件总巨细凌驾了最大限制(100M)"
end select
response.end
end if
开端了对ChannelID的果断
ChannelID=trim(objUpload.form("ChannelID"))
if ChannelID="" then 果断了,要是为空就堕落
response.write "频道参数丢失!"
exit sub 原来平常丢失的缘故原由是由于ID分歧要求
end if
ChannelID=Clng(ChannelID)
sqlChannel="select * from PE_Channel where ChannelID=" & ChannelID
set rsChannel=server.createObject("adodb.recordset")
rsChannel.open sqlChannel,conn,1,1
if rsChannel.bof and rsChannel.eof then
response.write "找不到此频道"
FoundErr=True 变量堕落
end if
if rsChannel("Disabled")=True then
response.write "此频道已经被禁用!"
FoundErr=True 上面进行对频道堕落的果断和处置惩罚
else
EnableUploadFile=rsChannel("EnableUploadFile")
MaxFileSize=rsChannel("MaxFileSize")
SavePath=strInstallDir & rsChannel("ChannelDir") & "/UploadSoftPic/" 保存的途径
UpFileType=rsChannel("UpFileType") 成功上传对巨细,途径,类型的处置惩罚
end if
rsChannel.close
set rsChannel=nothing
if EnableUploadFile=False then
response.write "本频道未开放文件上传功能"
FoundErr=True
end if
if FoundErr=True then exit sub
for each FormName in objUpload.file 列出所有上传了的文件
EnableUpload=False
set ofile=objUpload.file(FormName) 生成一个文件对象
if ofile.filesize<100 then
msg="请先选择你要上传的文件!"
FoundErr=True
end if
if ofile.filesize>(MaxFileSize*1024) then
msg="文件巨细超过了限制,最大只能上传" & CStr(MaxFileSize) & "K的文件!"
FoundErr=true
end if
FileExt=lcase(ofile.FileExt) 果断扩展名
arrUpFileType=split(UpFileType,"|")
for i=0 to ubound(arrUpFileType)
if FileExt=trim(arrUpFileType(i)) then
EnableUpload=true
exit for
end if
next
if FileExt="asp" or FileExt="asa" or FileExt="aspx" or FileExt="cer" or FileExt="cdx" then
EnableUpload=false 哈哈,关键在这里啦,上传毛病在这里啦
end if
if EnableUpload=false then
msg="这种文件类型不允许上传!/n/n只允许上传这几种文件类型:" & UpFileType
FoundErr=true
end if
strJS=""
response.write strJS
set ofile=nothing
next
set objUpload=nothing
end sub
%>
上面的是动易的上传代码,从上面分析,我们可以看到,它明显存在着上传毛病。紧张的毛病代
码在于这一句
FileExt=lcase(ofile.FileExt) 果断扩展名
arrUpFileType=split(UpFileType,"|")
for i=0 to ubound(arrUpFileType)
if FileExt=trim(arrUpFileType(i)) then
EnableUpload=true
exit for
end if
next
if FileExt="asp" or FileExt="asa" or FileExt="aspx" or FileExt="cer" or FileExt="cdx" then
EnableUpload=false
一个变量的堕落招致上传毛病的产生。原理都是利用加个空格,由于asp (后面有空格)是不等于asp的,而对.......
(待续)
补充 的部分 :一个变量的堕落招致上传毛病的产生。原理都是利用加个空格,由于asp (后面有空格)是不等于asp的,而对
于windows对付碰到有空格的他会自动去失空格,所以当我们上传一个asp 文件就会变成一个asp
文件。
利用的方法,主要是在于对channelID的突破,其它的好办,只要可以结构一下不为空的id就可以了。
encType=multipart/form-data>
- 文章作者: 福州军威计算机技术有限公司
军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。
TAG:
评论加载中...
|