漏洞危害:前台会员中心可登录任意用户账号,包括管理员账号(需要知道管理员名称),登录后获得相关权限。
影响版本:KesionCMS V9.5.131008之前的所有版本
如果您使用的版本低于V9.5.131008,请及时按以下方法修改代码:
请打开ks_cls/kesion.membercls.asp,找到类似以下代码
修复方案一
把下面加红色的两句删除即可。
Public Function UserLoginChecked()
UserName = KS.R(Trim(KS.C("UserName")))
PassWord= KS.R(Trim(KS.C("Password")))
RndPassword=KS.R(Trim(KS.C("RndPassword")))
IF UserName="" Then
UserLoginChecked=false
Exit Function
ElseIf IsObject(Session(KS.SiteSN&"UserInfo")) Then
UserLoginChecked=True
Else
Dim UserRs
If DataBaseType=1 Then
Dim Cmd : Set Cmd = Server.CreateObject("ADODB.Command")
Set Cmd.ActiveConnection=conn
Cmd.CommandText="KS_UserSQL"
Cmd.CommandType=4
CMD.Prepared = true
Cmd.Parameters.Append cmd.CreateParameter("@username",200,1,50,username)
Cmd.Parameters.Append cmd.CreateParameter("@password",200,1,50,password)
Set UserRs=Cmd.execute
Else
Set UserRS=Server.CreateOBject("ADODB.RECORDSET")
UserRS.Open "Select top 1 a.*,b.SpaceSize From KS_User a inner join KS_UserGroup b on a.groupid=b.id Where UserName='" & UserName & "' And PassWord='" & PassWord & "'",Conn,1,1
End If
IF UserRS.Eof And UserRS.Bof Then
UserLoginChecked=false
Exit Function
Else
If KS.ChkClng(KS.Setting(35))=1 And trim(RndPassword)<>trim(UserRS("RndPassword")) Then
UserLoginChecked=false
Response.Write ("<script>alert('发现有人正在使用你的账号,你被迫退出!');parent.location.href='" & KS.GetDomain & "User/UserLogout.asp';</script>")
Response.end
End If
'更新活动时间及在线状态
If Not KS.IsNul(session("setonlinestatus")) Then
Conn.Execute("Update KS_User Set LastLoginTime=" & SQLNowString & " Where UserName='" & UserName & "'")
Else
Conn.Execute("Update KS_User Set LastLoginTime=" & SQLNowString & ",IsOnline=1 Where UserName='" & UserName & "'")
End If
'更新其它会员的在线情况
If KS.IsNUL(Application("LastUpdateTime")) or (isDate(Application("LastUpdateTime")) and DateDiff("n",Application("LastUpdateTime"),Now)>CLng(KS.Setting(8))) Then
Application("LastUpdateTime")=Now
Conn.Execute("Update KS_User set isonline=0 WHERE DateDIff(" & DataPart_S &",LastLoginTime," & SQLNowString & ") > "& CLng(KS.Setting(8)) &" * 60")
End If
Set Session(KS.SiteSN&"UserInfo")=KS.RsToXml(UserRS,"row","") '写入session
UserLoginChecked=true
End if
UserRS.Close:Set UserRS=Nothing
End IF
If IsObject(Session(KS.SiteSN&"UserInfo")) Then
Set Node=Session(KS.SiteSN&"UserInfo").DocumentElement.SelectSingleNode("row")
GroupID=Node.SelectSingleNode("@groupid").text
ChargeType=Node.SelectSingleNode("@chargetype").text
End If
End Function
我们强烈建议您将系统升级到V9.5.131008!!!
特别感谢360网站安全检测平台(r00tf4uk)提供此漏洞信息。