RSS

quinta-feira, 14 de agosto de 2008

Joomla vulnerabilidade crítica encontrada

Saiu ontem uma vulnerabilidade para Joomla que permite a qualquer pessoa com essas intenções alterar a password de super-administrador do site em questão.

Esta vulnerabilidade afecta todas as versões 1.5.x joomla. A vulnerabilidade é um erro quase infantil no com_user que é o coração do registo e activação de contas do joomla, incluindo a gestão de contas tal de todos os membros, como admins e super admins.

O truque mais básico de SQL injection funciona na perfeição para explorar esta vulnerabilidade. Com tantos scanners de SQL injection não entendo como nunca ninguem tinha analizado a nova versão de joomla, pelo menos a informação não estava cá fora mas provavelmente já era conhecida desde a nova versão 1.5.x estar “na rua”e só foi agora publicada.

Para verificar se o seu site está vulnerável vá a

(site.com) /index.php?option=com_user&view=reset&layout=confirm

se lhe aparecer um campo introduza ‘ no token.

Depois vai ser-lhe pedida a introdução de uma password nova e alterando-a pode fazer login em /administrator com username admin e com a nova password que introduziu.

Dica 1:

Altere o source do ficheiro:

/components/com_user/models/reset.php

Linha 111 a 130

$db->setQuery('SELECT id FROM #__users WHERE block = 0 AND activation = '.$db->Quote($token));

Duas linhas antes desta coloque:

if(strlen($token) != 32) {
$this->setError(JText::_(’INVALID_TOKEN’));
return false;
}

Deverá ficar assim:

function confirmReset($token)
{
global $mainframe;
if(strlen($token) != 32) {
$this->setError(JText::_(’INVALID_TOKEN’));
return false;
}
$db = &JFactory::getDBO();
$db->setQuery(’SELECT id FROM #__users WHERE block = 0 AND activation = ‘.$db->Quote($token));

este fix é provisório e vai bloquear que seja introduzido o carater ‘

Qualquer pessoa com conhecimentos de SQL injection arranja com alguma facilidade formas de contornar esta validação, o melhor a fazer será aguardar uma solução ou fix oficial.

Dica 2:

Se o seu site tiver, e deve ter, um painel administrativo, vá ao seu painel e proteja com uma password o diretorio: /administrator

De preferência com uma password diferente da do seu site…

Nenhum comentário: