DataARTIGO

Técnica de alterar senha de usuário no Oracle

Uma das táticas mais “sujas”, diga-se de passagem, é a alteração de senha do usuário sem a sua permissão, pois pode ocorrer em diversos momentos do dia-a-dia, por exemplo:

  • O cara saiu de férias e deixou algum objeto no owner dele que precisa de manutenção.
  • Preciso pegar algumas informações da tabela da pessoa.
  • É necessário fornecer algumas permissões do usuário X para Y.
  • Ou, a melhor: existe um owner na aplicação que foi criado em 1900 e bolinhas e agora precisa de manutenção, e ninguém tem acesso a esse usuário, porque ninguém sabe a senha.

Bom, para resolver esses “probleminhas”, existe uma técnica no OracleOracle22 conteúdosOracle lança Java 26 para aumentar produtividade de desenvolvedoresDev (Back & Front) · mar 2026Oracle oferece o primeiro cluster de computação em nuvem em escala ZettaDevSecOps · jan 2025Oracle abre inscrições para o ONE, programa gratuito de formação em tecnologia e inteligência artificialData · dez 2024Ver tudo em Data que podemos utilizar para ter acesso completo a um específico usuário, um pequeno “hack” no dicionário Oracle, mas para conseguir a façanha, é necessário que tenha acesso à view DBA_USERS, que foi utilizada nesse exemplo.

ATENÇÃO

Logicamente que todos os exemplos que citei acima poderiam ser feitos pelo DBA da empresa ou alguém que tenha acesso a usuários gerenciais do banco de dados, como SYSTEM, usuários com role de DBA e etc. Isso é apenas um exemplo de como se aplicar a técnica.

Agora, vou passar o exemplo prático de como funciona.


1) Vamos criar um usuário.

SQL> select to_char(sysdate,'DD-MM-RRRR HH24:MI:SS') "HORA EXECUTADA" from dual;<br /><br />SQL> select instance_name, host_name, status from v$instance;<br /><br />INSTANCE_NAME HOST_NAME STATUS<br /><br />--------------- -------------------- ----------<br /><br />xe DBARODRIGO OPEN<br /><br />USER IS "SYS"<br /><br />SQL> create user RODRIGO<br />2 identified by rodrigo;<br />Usuário criado.<br />SQL><br />grant create session to RODRIGO;<br />Concessão bem-sucedida.<br />SQL><br />disco<br />Desconectado de Oracle Database 10g Express Edition<br />Release 10.2.0.1.0 - Production

2) Teste a conexão do novo usuário no banco de dados.

SQL> conn rodrigo/rodrigo<br />Conectado.<br />SQL> disco<br /><br />Desconectado de Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

3) Conectado com um usuário administrativo, faça um select básico na view DBA_USERS.

SQL> conn system<br />Informe a senha:<br />Conectado.<br />SQL> select username, account_status, password<br />  2  from dba_users<br />  3  where username = 'RODRIGO';<br />USERNAME                       ACCOUNT_STATUS                   PASSWORD<br />------------------------------ -------------------------------- ------------------------------<br />RODRIGO                        OPEN                             F697FBF0BB2DA2EC

4) Altere a senha do usuário desejado, no exemplo, vou alterar a senha para FERNANDA.

SQL> alter user RODRIGO identified by FERNANDA;<br />Usuário alterado.

5) Pegue o valor gerado para a nova senha.

SQL> select username, account_status, password<br />2  from dba_users<br />3  where username = 'RODRIGO';<br /><br />USERNAME                       ACCOUNT_STATUS                   PASSWORD<br />------------------------------ -------------------------------- ------------------------------<br /><br />RODRIGO                        OPEN                             FB34D454E9FFDE18

Observação

Pode parecer confuso, mas vamos recapitular os valores que são equivalentes as senhas:

F697FBF0BB2DA2EC = RODRIGO<br />FB34D454E9FFDE18 = FERNANDA

6) Para voltar a senha anterior, apenas utilize a opção VALUES junto com IDENTIFIED BYcom o valor da coluna password.

SQL> conn system<br />Informe a senha:<br />Conectado.<br />SQL> alter user RODRIGO identified by values 'F697FBF0BB2DA2EC';

O valor F697FBF0BB2DA2EC (gerado por um algoritmo HASH) é equivalente ao valor RODRIGO.

Agora, veja os testes.

SQL> conn rodrigo/fernanda<br />Conectado.<br />SQL> disco<br />Desconectado de Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production<br />SQL> conn system<br />Informe a senha:<br />Conectado.<br />SQL> alter user RODRIGO identified by values 'F697FBF0BB2DA2EC';<br />Usuário alterado.<br />SQL> disco<br />Desconectado de Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production<br />SQL> conn rodrigo/rodrigo<br />Conectado.<br />SQL> disco<br />Desconectado de Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

Como eu não alterei o valor para a senha FERNANDA, se eu tentar logar com essa senha, terei erros, veja.

SQL> conn rodrigo/fernanda<br />ERROR:<br />ORA-01017: invalid username/password; logon denied

Pronto!!

Uma técnica de hack bem conhecida entre os DBAS, que até a versão 10gR2 (no Patchset 10.2.0.4) ainda continua, eu não sei ainda se nas versões 11g já possui algum tipo de segurança nesse ponto, então aprecie com moderação. Sugestões no meu blog.

Abraços,

Rodrigo almeida

Rodrigo Almeida, DBA Oracle há mais de 10 anos é um dos DBA’s mais influentes do pais e mantém seu próprio Portal e Fórum (www.rodrigoalmeida.net), eleito ORACLE ACE em 2009 pela Oracle Corporation, cursou Eng. da Computação pela UNISANTA, graduado em Analise de banco de dados e pós-graduando em BI pela Veris Faculdades, especialista em Micro-eletrônica pelo INSA em Toulouse/França. Possui certificações OCP 9i/10g/11g, OCE SQL Expert, OCS 11g Implementations e Exadata e mais de 14 certificações Oracle. É vice-presidente do grupo de usuários Oracle do Brasil (GUOB), colunista Oracle do portal iMasters e colaborador técnico para os principais portais e revistas Brasileiras e internacionais. É participante dos Beta Program da Oracle Coporation para soluções de banco de dados e instrutor oficial da Oracle University Brasil para os treinamentos de BD e Exadata e atualmente é DBA Oracle e DMA Exadata e consultor técnico da Oracle do Brasil focado no gerenciamento e implementação de Oracle Exadata, Exalogic e tecnologias de banco de dados e aplicações Oracle. Também é proprietário da empresa UNIDBA Consultoria em TI (www.unidba.com.br)

Ver perfil