Conta 'root' não segura do MySQL @ @ localhost 'acessada remotamente?

8

Um pouco de fundo: Acabamos de invadir nosso sistema de PBX. O servidor em si parece seguro (sem acesso não autorizado ao console - SSH etc), mas de alguma forma os hackers conseguiram injetar um novo usuário administrador no software PBX (FreePBX, suportado pelo MySQL). Os logs do Apache sugerem que os hackers conseguiram adicionar o usuário sem usar a interface da web (ou qualquer exploração na interface da web).

Agora, eu descobri que o MySQL estava rodando sem uma senha root (!!) e abertamente ligado ao endereço IP externo (Obviamente, eu bloqueei isso agora). No entanto, o único usuário de nível raiz no MySQL era 'root'@'localhost'e 'root'@'127.0.0.1', sendo que ambos deveriam estar acessíveis apenas localmente.

Então, minha pergunta é a seguinte:

Existe uma maneira de falsificar uma conexão com o MySQL para permitir a conexão com o usuário 'root' @ 'localhost' a partir de um endereço IP remoto, SEM executar qualquer outra exploração localmente?

Para referência, a caixa é Centos 5 (Linux 2.6.10) executando o Mysql 5.0.95.

TFk
fonte
Seria mais adequado para ServerFault - offtopic aqui.
Kapa
Eu não tinha certeza - meu sentimento pessoal era que, como se trata menos de problemas de configuração / administração do servidor e mais sobre a tentativa de explorar um bug em potencial no MySQL, ele pode se encaixar melhor aqui. Desculpas se as pessoas acharem que estou no site / seção errado por isso.
TFK
2
Na verdade, provavelmente pertence a security.stackexchange.com
1
Você diz que "o único usuário no nível raiz era root @ localhost"; no entanto, havia outros usuários? Você não precisa de um usuário no nível raiz para adicionar um registro. Além disso, você deve procurar vulnerabilidades no FreePBX como esta .
Marcus Adams
A exploração no seu link foi corrigida na minha versão do FreePBX, mas sim, eu concordo que as vulnerabilidades do FreePBX são o ponto de entrada mais provável, exceto que não consigo encontrar nada nos meus logs de acesso do Apache compatíveis com qualquer uma das vulnerabilidades conhecidas (sem patch) . Bom argumento com outros usuários - o único outro usuário no banco de dados era o asterisco, que possui uma senha (não padrão). Se esse foi o ponto de entrada, ele novamente aponta para uma vulnerabilidade do FreePBX (possivelmente não lançada). A "senha sem root" parecia um buraco tão grande, comparado a uma nova exploração do FreePBX não documentada. Portanto, minha pergunta / post.
TFK

Respostas:

1

Não.

O MySQL nunca fará logon em um usuário com a especificação localhostou 127.0.0.1host se você não for do sistema local. Observe que isso também cobre a vulnerabilidade de desvio de autenticação, CVE 2012-2122; a comparação da senha pode ser enganada, mas a comparação do host não é.

Você precisaria de algo no sistema para fazer proxy para "enganar" a verificação do host de origem. Algo como phpmyadmin, ou um balanceador de carga como o HAProxy, rodando em frente à porta TCP do MySQL, vem à mente.

Shane Madden
fonte
Isso é o que eu suspeitava, o que significa que, por pior que seja uma senha de root em branco, provavelmente não foi a exploração. Sempre bom para obter opiniões informadas - Muito obrigado.
TFK
2

O nome rooté criado por padrão e é muito conhecido. A raiz do valor literal não tem nenhum significado no sistema de privilégios do MySQL. Portanto, não há requisitos para continuar com o nome de usuário root.

Você deve alterar rooto nome do usuário para outra coisa, para que o mundo exterior não seja capaz de identificá-lo (palpite) facilmente, isso reduzirá as tentativas de invasão.

Por exemplo: se você tem um usuário como root@, localhostque é bastante conhecido por todos, os hackers tentarão conectá-lo, você deve alterá-lo para algo específico como admin_db_name@ localhostpara melhor segurança.

Monitore uma variável de status chamada Aborted_connectsperiodicamente para saber a Refusedconexão com o servidor MySQL; ela deve ser 0 após o Flush status;comando e não deve aumentar ainda mais.

mostre status como 'Aborted_connects';

Mahesh Patil
fonte
2

Será que "não registrado acesso não autorizado" incluem a falha de início de sessão tentativas? Caso contrário, pode ser o CVE 2012-2122 .

[...] ao executar em certos ambientes com certas implementações da função memcmp, (MySQL) permite que atacantes remotos ignorem a autenticação, autenticando repetidamente com a mesma senha incorreta, o que eventualmente faz com que uma comparação de token seja bem-sucedida devido a uma verificação incorreta valor de retorno.

samuirai
fonte
Meu "nenhum acesso não autorizado não registrado" era lamentavelmente ambíguo - eu quis dizer que nenhum invasor conseguiu obter acesso ao console do servidor (por exemplo, por SSH). Além disso, parece que as compilações do Centos não são afetadas (< community.rapid7.com/community/metasploit/blog/2012/06/11/… ), mas certamente o tipo de coisa que eu estava procurando.
TFK