Escalação de Privilégios SQL: Do MySQL ao Root no Servidor

Escalação de Privilégios SQL: Do MySQL ao Root no Servidor

Este artigo explora a escalação de privilégios em ambientes de banco de dados, focando em como um atacante pode obter acesso root em um servidor a partir de um acesso inicial ao MySQL. Abordaremos técnicas para elevar privilégios dentro do banco de dados e, subsequentemente, no sistema operacional.

MundiX News·02 de maio de 2026·4 min de leitura·👁 2 views

A escalação de privilégios é uma etapa crítica em muitos ataques cibernéticos, permitindo que um invasor com acesso limitado a um sistema aumente suas permissões para obter controle total. No contexto de bancos de dados, a escalação de privilégios SQL pode ocorrer de duas formas principais: elevação de privilégios dentro do próprio ambiente do banco de dados ou elevação de privilégios no sistema operacional subjacente. Para que a escalação de privilégios no sistema operacional seja bem-sucedida, é crucial que o serviço do banco de dados esteja rodando sob uma conta com privilégios elevados. Mesmo que não seja a conta root, uma conta de usuário distinta pode abrir caminhos para explorar outras vulnerabilidades e vetores de ataque.

Para fins de demonstração prática, utilizaremos a máquina virtual laboratorial "Kioptrix: Level 1.3" disponível no VulnHub. Recomenda-se o download e a configuração desta máquina para replicar os passos descritos, o que facilitará a compreensão e permitirá a experimentação autônoma. Ao configurar a máquina no VirtualBox, opte pela versão VMware e utilize o arquivo Kioptrix4_vmware.vmdk. Crie uma nova máquina virtual, selecione Linux como tipo e Ubuntu como sistema operacional, sem a necessidade de um ISO. Na configuração do disco rígido, escolha "Usar um disco rígido existente" e adicione o arquivo .vmdk baixado. Após a configuração, a máquina estará pronta para ser iniciada. O processo de obtenção das credenciais de login não será detalhado aqui, mas é recomendado que o leitor o explore completamente, desde o escaneamento de portas até a aquisição das credenciais, para uma imersão completa no cenário de ataque.

Uma vez dentro da máquina, autentique-se via SSH ou utilize o terminal da máquina em execução com as credenciais john/MyNameIsJohn. Ao fazer login, você se deparará com um shell limitado (lshell), que restringe a execução de comandos. Comandos como ls, cd e echo são permitidos, mas tentar executar mysql resultará em um erro de comando desconhecido. Para obter um shell Bash completo, execute o comando echo os.system('/bin/bash'). Este comando, escrito em Python, utiliza a função system() do módulo os para executar chamadas de sistema, proporcionando um shell interativo. Com o shell Bash em mãos, tente acessar o MySQL como root: mysql -u root. Em muitas configurações de teste, o usuário root do MySQL pode não ter senha definida, embora versões modernas do MySQL implementem proteções contra isso. Em seguida, verifique as funções de usuário existentes com select * from mysql.func;. Funções de usuário (UDFs) permitem estender as funcionalidades do MySQL com código escrito em linguagens como C ou C++, compilado em bibliotecas (.so no Linux, .dll no Windows) e carregado no diretório de plugins do MySQL. Elas são úteis para processamento complexo de dados, algoritmos customizados e, crucialmente, para executar chamadas de sistema.

Na saída do comando select * from mysql.func;, observe a função sys_exec da biblioteca lib_mysqludf_sys.so. É altamente provável que esta função execute chamadas de sistema. A biblioteca lib_mysqludf_sys.so é conhecida no meio de hacking e seu código fonte pode ser encontrado online. No entanto, os nomes das bibliotecas e funções podem variar em ambientes reais, dificultando a identificação de suas capacidades. Tentar executar select sys_exec('id'); pode retornar NULL em vez do esperado id, indicando que a função não expõe informações diretamente. Uma abordagem alternativa é tentar um comando malformado, como select sys_exec('brbrbr');. Se o MySQL travar com um erro, isso sugere que a UDF realmente executa chamadas de sistema, mas pode não lidar corretamente com erros. Para escalar privilégios, tente adicionar o usuário john a um grupo administrativo. No contexto desta máquina laboratorial, o comando seria select sys_exec('usermod -aG admin john');. Em cenários reais, é mais comum adicionar o usuário ao grupo sudo. Um retorno NULL após a execução deste comando pode indicar sucesso. Saia do MySQL, retorne ao shell e execute sudo su. Se bem-sucedido, você terá escalado privilégios para root através do MySQL, demonstrando a eficácia desta técnica.

🛡️⚡

Pare de pesquisar. Comece a hackear.

O MundiX é seu copiloto de pentest com IA: comandos exatos, análise de outputs e próximo passo na kill chain — em segundos.

Testar grátis por 7 dias →

Sem cartão para começar · Planos a partir de R$49/mês

📤 Compartilhar & Baixar

📩 Newsletter MundiX

Receba novidades de cibersegurança + um checklist de pentest grátis. Sem spam.

Ao assinar você concorda em receber e-mails. Cancele quando quiser.