魔力论坛最新版本 2.8.0 在登陆模块存在缺陷,通过精心构造代码获取管理员密码hash //login.php switch ($_INPUT['do']) { case 'login': $this->dologin(); break; case 'logout': $this->dologout(); break; case 'autologin': $this->autologin();<---该函数存在漏洞 break; default: $this->loginpage(); break; } } …… function autologin() { global $forums, $DB, $bboptions, $bbuserinfo, $_INPUT; if (! $bbuserinfo['id']) { $userid = intval($forums->func->get_cookie('userid')); $password = $forums->func->get_cookie('password'); //对这个参数未作处理,我们看看get_cookie是怎么写的 If ($userid AND $password) { $DB->query("SELECT * FROM " . TABLE_PREFIX . "user WHERE id='$userid' AND password='$password'");//注意这个语句 if ($user = $DB->fetch_array()) { …… } } } } 找到get_cookie 代码: function get_cookie($name) { global $bboptions; if (isset($_COOKIE[$bboptions['cookieprefix'] . $name])) { return rawurldecode($_COOKIE[$bboptions['cookieprefix'] . $name]); //可以通过rawurlencode引入单引号 } return false; } 下面我们来看看那个语句...
魔力论坛最新版本 2.8.0 在登陆模块存在缺陷,通过精心构造代码获取管理员密码hash //login.php switch ($_INPUT['do']) { case 'login': $this->dologin(); break; case 'logout': $this->dologout(); break; case 'autologin': $this->autologin();<---该函数存在漏洞 break; default: $this->loginpage(); break; } } …… function autologin() { global $forums, $DB, $bboptions, $bbuserinfo, $_INPUT; if (! $bbuserinfo['id']) { $userid = intval($forums->func->get_cookie('userid')); $password = $forums->func->get_cookie('password'); //对这个参数未作处理,我们看看get_cookie是怎么写的 If ($userid AND $password) { $DB->query("SELECT * FROM " . TABLE_PREFIX . "user WHERE id='$userid' AND password='$password'");//注意这个语句 if ($user = $DB->fetch_array()) { …… } } } } 找到get_cookie 代码: function get_cookie($name) { global $bboptions; if (isset($_COOKIE[$bboptions['cookieprefix'] . $name])) { return rawurldecode($_COOKIE[$bboptions['cookieprefix'] . $name]); //可以通过rawurlencode引入单引号 } return false; } 下面我们来看看那个语句 $DB->query("SELECT * FROM " . TABLE_PREFIX . "user WHERE id='$userid' AND password='$password'"); 完全可以 提交登陆方式为autologin并且通过cookie来盲注的~~~~~~~~~ MolyX 2.8.0 暂无