Como usuário MySQL sem acesso ao banco de dados mysql , é possível recuperar meus privilégios?
relate perguntas
-
Existem ferramentas de benchmarking do MySQL? [fechado]
-
Onde posso encontrar o log lento do mysql?
-
Como posso otimizar um mysqldump de um banco de dados grande?
-
Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?
-
Como um grupo pode rastrear alterações no esquema do banco de dados?
Parece que usar
SHOW GRANTS
funcionou neste caso:Embora o manual indique que você ainda precisa ter acesso ao banco de dados mysql :
E acessar o mysql.user diretamente não funcionou, provavelmente porque ele também contém outras informações confidenciais, como as senhas de outros usuários:
Supondo que você tenha acesso somente leitura à pasta /var/lib/mysql/mysql, aqui está a abordagem de um hacker, sem interromper o servidor em execução e sem expor nenhuma senha:
Etapa 1) Instale o MySQL em sua máquina Windows. Certifique-se de que é o mesmo número de versão do MySQL que a versão do Linux.
Etapa 2) Encerre o mysql na máquina Windows:
C:\> net stop mysql
Etapa 3) Baixe o esquema mysql do servidor Linux e armazene os arquivos individuais na subpasta mysql na máquina Windows. O esquema mysql contém vários arquivos MyISAM e CSV.
Etapa 4) Adicione a linha 'skip-grant-tables' ao my.ini em sua máquina Windows
Etapa 5) Inicie o mysql na máquina Windows
C:\> net start mysql
Etapa 6) Execute o cliente mysql na máquina Windows (sem senha necessária neste momento)
Etapa 7) Execute este comando no cliente mysql
INSERT INTO mysql.user SET Host = 'localhost', User = 'myhackeruser', Password = PASSWORD('whatever'), Select_priv = 'Y', Insert_priv = 'Y', Update_priv = 'Y', Delete_priv = 'Y' , Create_priv = 'Y', Drop_priv = 'Y', Reload_priv = 'Y', Shutdown_priv = 'Y', Process_priv = 'Y', File_priv = 'Y', Grant_priv = 'Y', References_priv = 'Y', Index_priv = 'Y', Alter_priv = 'Y', Show_db_priv = 'Y', Super_priv = 'Y', Create_tmp_table_priv = 'Y', Lock_tables_priv = 'Y',Execute_priv = 'Y', Repl_slave_priv = 'Y', Repl_client_priv = 'Y', Create_view_priv = 'Y', Show_view_priv = 'Y', Create_routine_priv = 'Y', Alter_routine_priv = 'Y', Create_user_priv = 'Y', max_questions = 0, max_updates = 0;
Etapa 8) Encerre o mysql na máquina Windows:
C:\> net stop mysql
Etapa 9) Inicie o mysql na máquina Windows:
C:\> net start mysql
Etapa 10) Execute o cliente mysql como myhackeruser:
C:\> mysql -umyhackeruser -pwhatever
Etapa 11) Execute "SHOW GRANTS FOR 'whateveruserid'@'whateverhost';"
É uma abordagem prolixo, mas funciona.
De uma chance !!!