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.
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;
SQL> select instance_name, host_name, status from v$instance;
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
SQL> conn rodrigo/rodrigo
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> select username, account_status, password
2 from dba_users
3 where username = 'RODRIGO';
USERNAME ACCOUNT_STATUS PASSWORD
------------------------------ -------------------------------- ------------------------------
RODRIGO OPEN F697FBF0BB2DA2EC
SQL> alter user RODRIGO identified by FERNANDA;
Usuário alterado.
SQL> select username, account_status, password
2 from dba_users
3 where username = 'RODRIGO';
USERNAME ACCOUNT_STATUS PASSWORD
------------------------------ -------------------------------- ------------------------------
RODRIGO OPEN FB34D454E9FFDE18
Pode parecer confuso, mas vamos recapitular os valores que são equivalentes as senhas:
F697FBF0BB2DA2EC = RODRIGO
FB34D454E9FFDE18 = FERNANDA
SQL> conn system
Informe a senha:
Conectado.
SQL> alter user RODRIGO identified by values 'F697FBF0BB2DA2EC';
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
SQL> conn rodrigo/fernanda
ERROR:
ORA-01017: invalid username/password; logon denied
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.
Efetuei os testes na versão Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 e os hashes das senhas não são exibidos.
Fonte: Blog Rodrigo Almeida .
Nenhum comentário:
Postar um comentário