账号通
    

账号  

密码  

21616

查看

15

回复
主题:低于KesionCMS V9.5.131008版本任意用户登录漏洞的修正方案 [收藏主题] 转到:  
科汛官方 当前离线

47268

主题

145

广播

405

粉丝
添加关注
级别:管理员

用户积分:101604 分
登录次数:7935 次
注册时间:2006/12/7
最后登录:2023/12/14
科汛官方 发表于:2013/10/8 20:24:33   | 显示全部帖子 查看该作者主题 楼主 
科汛在线考试系统(NET)

漏洞危害:前台会员中心可登录任意用户账号,包括管理员账号(需要知道管理员名称),登录后获得相关权限。


影响版本: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)提供此漏洞信息。


 
KesionCMS,,
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.07788秒 powered by KesionCMS 9.0