根据近日360第三方漏洞收集平台("库带计划")有仙剑之鸣提交了[KesionCMS任意文件下载删除]的漏洞,现官方给出漏洞修改方法。
低于V9.5.131104版本的用户,我们强列建议您及早升级到最新版本(免费最新V9.5.131104正式版请到http://www.kesion.com/down下载,商业用户最新版本请到http://vip.kesion.com/user下载)。
漏洞细节就不公布,以免不怀好意之人破坏!
漏洞影响版本:v9.5,v9.0,v8.0,v7.0等更早版本
以下修复方法(升级到V9.5.131104的用户可以忽略不看):
以下以V9.5版本修复为例说明,其它版本类似:
第一步
用记事本等编辑工具打开ks_cls/kesion.commoncls.asp
找到约1500行左右的如下代码
'添加自关联数据库
Sub FileAssociation(ByVal ChannelID,ByVal InfoID,ByVal Content,ByVal Flag)
If Flag<>0 Then
Conn.Execute("Delete From KS_UploadFiles Where IsAnnex<>1 and ChannelID=" & ChannelID & " and InfoID=" & InfoID)
End If
If ChannelID<>0 And ChannelID<1000 and channelid<>7 Then
Dim Node
LoadFieldToXml()
For Each Node In Application(SiteSN & "_FeildXml").DocumentElement.SelectNodes("row[@channelid=" & ChannelID &" and @fieldtype=9 or @fieldtype=10]")
Content=Content & Request(Node.SelectSingleNode("@fieldname").text)
Next
End If
Dim FileLists,I,FileArr
FileLists=GetFilesList(ChannelID,Content)
If Not IsNul(FileLists) Then
FileArr=Split(FileLists,"|")
For I=0 To Ubound(FileArr)
Conn.Execute("Insert Into [KS_UploadFiles](ChannelID,InfoID,ClassID,FileName,IsAnnex,UserName,AddDate) values(" &ChannelID &"," & InfoID &",0,'" & replace(FileArr(i),"'","''") & "',0,'" & C("UserName") & "'," & SQLNowString&")")
Next
End If
End Sub
请将上面红色的代码用以下代码替换:
Dim strFile:strFile=trim(FileArr(i))
If right("00000000"&lcase(strfile),4)=".asp" or right("00000000"&lcase(strfile),5)=".aspx" or right("00000000"&lcase(strfile),4)=".asa" or right("00000000"&lcase(strfile),4)=".php" or right("00000000"&lcase(strfile),4)=".jsp" or len(strfile)<10 then
Else
Conn.Execute("Insert Into [KS_UploadFiles](ChannelID,InfoID,ClassID,FileName,IsAnnex,UserName,AddDate) values(" &ChannelID &"," & InfoID &",0,'" & replace(strFile,"'","''") & "',0,'" & C("UserName") & "'," & SQLNowString&")")
End If
第二步:同样用记事本等编辑工具打开
item/filedown.asp
找到207行左右的如下代码
Sub downloadFile(strFile,FileOldName)
Server.ScriptTimeOut=999999
Dim fso,f,intFilelength,strFilename,DownFileName
替换为
Sub downloadFile(strFile,FileOldName)
strFile=trim(strFile)
if right("00000000"&lcase(strfile),4)=".asp" or right("00000000"&lcase(strfile),5)=".aspx" or right("00000000"&lcase(strfile),4)=".asa" or right("00000000"&lcase(strfile),4)=".php" or right("00000000"&lcase(strfile),4)=".jsp" then
ks.die "<script>alert('非法下载!');window.close();</script>"
end if
Server.ScriptTimeOut=999999
即增加上面红色的代码。
本次漏洞补丁特别感谢“ 360网站安全检测平台(仙剑之鸣)”