详细解释Joomla 1.5.6的安全漏洞

注意,将在新窗口中打开。 PDF打印E-mail

我看了很多网上上说的,都看不太明白,我装的是Joomla 1.5.2的版本,一定要升级到1.5.6吗?
提问者: luna.dai
最佳答案
 
也可以不升级的有安全漏洞的代码位于components/com_usermodelsreset.php文件中的第116行:
$db->setQuery('SELECT id FROM #__users WHERE block = 0 AND activation = '.$db->Quote($token)); 
当$token的值为空时(Joomla会对用户的输入值进行过滤,把‘之类的输入过滤掉),该SQL就变成:
SELECT id FROM #_users WHERE block = 0 AND activation = '';  
在后续的操作中就会取得默认排序的第一条记录,通常情况下就是系统管理员Administrator,这样hacker
就可以修改管理员的密码了。 解决这个问题除了升级以外还有两种方法:
1 修改 components/com_usermodelsreset.php文件,在$mainframe后面添加以下代码:
if(strlen($token) != 32) {
$this->setError(JText::_('INVALID_TOKEN'));
return false;
}
这样可以从长度上保证是系统的token。

2 修改ID最小的用户(管理员)的用户名为一个非常难猜的名字,比如1jk34k34jk4j5k45j4k5j,
并且添加一个新的用户作为管理员,以后就用这个新用户登录管理界面,这样即使hacker重置了
老的管理员的密码,也会因为不知道用户名所以无法登陆。