Mambo Site Server Cookie信息确认漏洞CVE-2003-1245CNNVD-200312-380CNVD-2003-0585
10.0AVACAUCIA
发布:2003-12-31
修订:2017-07-11
Mambo Site Server是一款免费开放源代码WEB内容管理工具,由PHP编写。 Mambo Site Server在进行授权访问的时候没有充分确认基于Cookie验证的信息,远程攻击者可以利用这个漏洞使用特殊Cookie访问管理页面。 /administrator/index2.php脚本存在漏洞,如果用户知道会话表中的sessionid的情况下,就可以以管理员权限访问Mambo服务器。 一般的PHP设计让你设置Cookie时,如果页面不被刷新Cookie是不会被更新的,Mambo SiteServer包含如下代码: setcookie(\"sessioncookie\", \"$sessionID\"); if ($HTTP_COOKIE_VARS[\"sessioncookie\"]!=\"\") { $query=\"INSERT into \".$dbprefix.\"session set session_id=\'\'$cryptSessionID\'\', guest=\'\'\'\', userid=\'\'$uid\'\', usertype=\'\'$usertype\'\', gid=\'\'$gid\'\', username=\'\'$username\'\'\"; $database->openConnectionNoReturn($query); } 我们可以看到,Mambo SiteServer在插入sessionid到会话表之前会检查COOKIE是否设置,如果没有设置,就没有会话ID插入也就不能登录访问管理员目录,但是查看SessionCookie.php代码,我们可以看到只要你退出就会把sessionid插入: $current_time = time(); if ($HTTP_COOKIE_VARS[\"sessioncookie\"]==\"\"){ $randnum=getSessionID1(); ... $cryptrandnum=md5($randnum); ... setcookie(\"sessioncookie\", \"$randnum\"); $guest=1; $query=\"INSERT into \".$dbprefix.\"session SET...
Mambo Site Server是一款免费开放源代码WEB内容管理工具,由PHP编写。 Mambo Site Server在进行授权访问的时候没有充分确认基于Cookie验证的信息,远程攻击者可以利用这个漏洞使用特殊Cookie访问管理页面。 /administrator/index2.php脚本存在漏洞,如果用户知道会话表中的sessionid的情况下,就可以以管理员权限访问Mambo服务器。 一般的PHP设计让你设置Cookie时,如果页面不被刷新Cookie是不会被更新的,Mambo SiteServer包含如下代码: setcookie(\"sessioncookie\", \"$sessionID\"); if ($HTTP_COOKIE_VARS[\"sessioncookie\"]!=\"\") { $query=\"INSERT into \".$dbprefix.\"session set session_id=\'\'$cryptSessionID\'\', guest=\'\'\'\', userid=\'\'$uid\'\', usertype=\'\'$usertype\'\', gid=\'\'$gid\'\', username=\'\'$username\'\'\"; $database->openConnectionNoReturn($query); } 我们可以看到,Mambo SiteServer在插入sessionid到会话表之前会检查COOKIE是否设置,如果没有设置,就没有会话ID插入也就不能登录访问管理员目录,但是查看SessionCookie.php代码,我们可以看到只要你退出就会把sessionid插入: $current_time = time(); if ($HTTP_COOKIE_VARS[\"sessioncookie\"]==\"\"){ $randnum=getSessionID1(); ... $cryptrandnum=md5($randnum); ... setcookie(\"sessioncookie\", \"$randnum\"); $guest=1; $query=\"INSERT into \".$dbprefix.\"session SET username=\'\'\'\', time=$current_time, session_id=\'\'$cryptrandnum\'\', guest=$guest\"; $database->openConnectionNoReturn($query); } 因此,如果某个COOKIE按照下面的方法发送给浏览器(如某个人刚退出Mambo服务器): sessioncookie=nh54OQIZb8ybaA2CNNdU1046102063 攻击者可以通过MD5加密此值,并以这个会话ID访问/administrator/index2.php脚本,就会认为我们以管理员登录: /administrator/index2.php?session_id=0ebda5bbba49dc226b4ed8fc801f1d98