Pular para o conteúdo

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

Prestigie o autor e deixe o seu comentário:

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *