GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Técnica de hack em senhas armazenadas pelo Oracle.

Aprenda a utilizar uma técnica de hack de senhas armazenadas no dicionário de dados 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, é deixou algum objeto no owner dele.
  • Preciso pegar algumas informações da tabela do FULANO.
  • É 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 ninguem sabe a senha.

Bom, para resolver esses “probleminhas”, existe uma técnica no Oracle 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 a view DBA_USERS, que foi utilizado nesse exemplo.

LEMBRANDO

Lógicamente, 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> @id
HORA EXECUTADA
-------------------
09-09-2008 11:45:57
INSTANCE_NAME   HOST_NAME            STATUS
--------------- -------------------- ----------
xe              DBARODRIGO          OPEN
USER IS "SYS"
SQL> create user RODRIGO
  2  identified by rodrigo;
Usuário criado.
SQL> grant create session to RODRIGO;
Concessão bem-sucedida.
SQL> disco
Desconectado de Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

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

SQL> conn rodrigo/rodrigo
 Conectado.
SQL> disco
 
 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
 Informe a senha:
 Conectado.
SQL> select username, account_status, password
   2  from dba_users
   3  where username = 'RODRIGO';
 
 USERNAME                       ACCOUNT_STATUS                   PASSWORD
 ------------------------------ -------------------------------- ------------------------------
 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;

Usuário alterado.

5) Pegue o valor gerado para a nova senha.

SQL> select username, account_status, password
2  from dba_users
3  where username = ‘RODRIGO’;

USERNAME                       ACCOUNT_STATUS                   PASSWORD


RODRIGO                        OPEN                             FB34D454E9FFDE18

Observação

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

F697FBF0BB2DA2EC = RODRIGO
 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
Informe a senha:
Conectado.
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
 Conectado.
 SQL> disco
 Desconectado de Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
 SQL> conn system
 Informe a senha:
 Conectado.
 SQL> alter user RODRIGO identified by values 'F697FBF0BB2DA2EC';
 
 Usuário alterado.
 
 SQL> disco
 Desconectado de Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
 SQL> conn rodrigo/rodrigo
 Conectado.
 SQL> disco
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
ERROR:
ORA-01017: invalid username/password; logon denied

FINISH! 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.

Abraços

Share

You may also like...

Deixe um comentário

O seu endereço de e-mail não será publicado.