[oracle_br] Re: Usuários com privilégios arriscados

2014-06-10 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Bem, vc não diz mas em primeiro lugar, entendo que vc está focando nos 
privilégios de sistema : obviamente, um privilégio de acesso/DDL/DML impróprio 
nas tabelas do aplicativo pode ** detonar ** o aplicativo, deixando-o fora de 
combate rapidinho, mas isso vai ser tratado/está sendo tratado numa outra 
atuação...
 Com isso em mente, eu diria :
 
 a) faltam aí checar os privilégios UNLIMITED TABLESPACE (que permite criar 
objs na tablespace SYSTEM, talvez até eventualmente lotando-a e assim 
derrubando o banco, ou no mínimo causando problemas de 
performance/administração), de DEBUG, ADMINISTER, , de FLASHBACK e de EXPORT :  
em tese não se derruba um banco com eles MAS podem causar lentidão e pros de 
acesso se mal-usados
 
 b) falta checar os privilégios de EXECUTE nas packages internas pertencentes 
ao SYS e aos schemas internos (algumas dessas são mega-poderosas, com LARGA 
margem para exploit
 
 c) muito importante : falta checar os privilégios de sistema recebidos por 
ROLES, principalmente a role DBA e as roles de operadores do database : 
acredite ou não, ainda hoje vc encontra aplicativo que exige que o usuário 
dono das tabs dele receba role de DBA, de DBOPER, ou coisa assim...
 
  []s
  
Chiappa

OBS : = vc pode se basear no script abaixo, que lista TODOS os privs, seja 
recebidos diretamente, seja por role, seja privs de execute, adapte-o pra sua 
necessiadde...


set echo off
set verify off
set pages 
col granted_role form a28
col owner form a15
col table_name form a33
col privilege form a33
ACCEPT username  prompt 'Enter Username : '
PROMPT Roles granted to user
SELECT granted_role,admin_option,default_role
FROM dba_role_privs
WHERE grantee=UPPER('username')
ORDER BY 1;
PROMPT Table Privileges granted to a user through roles
SELECT granted_role, owner, table_name, privilege
FROM ( SELECT granted_role
FROM dba_role_privs WHERE grantee=UPPER('username')
   UNION
   SELECT granted_role
FROM role_role_privs
WHERE role in (SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER('username')
)
   ) roles, dba_tab_privs
WHERE granted_role=grantee
ORder by 1,2,3,4;
PROMPT System Privileges assigned to a user through roles
SELECT granted_role, privilege
FROM ( SELECT granted_role
FROM dba_role_privs WHERE grantee=UPPER('username')
   UNION
   SELECT granted_role
FROM role_role_privs
WHERE role in (SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER('username')
)
   ) roles, dba_sys_privs
WHERE granted_role=grantee
 ORDER BY 1,2;
PROMPT Table privileges assigned directly to a user
SELECT owner, table_name, privilege
FROM dba_tab_privs
WHERE grantee=UPPER('username')
ORDER BY 1,2,3;
PROMPT System privileges assigned directly to a user
SELECT privilege, admin_option
FROM  dba_sys_privs
WHERE grantee=UPPER('username') ORDER BY 1;
undefine username
/

Re: [oracle_br] Re: Usuários com privilégios arriscados

2014-06-10 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
Chiappa, não consegui realizar a consulta com a sua query:
 
Primeira observação:

 PROMPT System privileges assigned directly to a user 
 
Essa consulta mostra todos os privilegios dados diretamente pros usuarios, 
inclusive para as ROLES.
 
Que é a que eu tinha feito no primeiro tópico, beleza (:

O problema é que agora preciso dos privilégios dos usuários dados através de 
ROLES, que seria essa que você mandou:

 SELECT granted_role, privilege
 FROM ( SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER('username')
 UNION
 SELECT granted_role
 FROM role_role_privs
 WHERE role in (SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER
 ('username')
 )
 ) roles, dba_sys_privs
 WHERE granted_role=grantee
 ORDER BY 1,2;
 PROMPT Table privileges assigned directly to a user
 SELECT owner, table_name, privilege
 FROM dba_tab_privs
 WHERE grantee=UPPER('username')
 ORDER BY 1,2,3;

 
Só que o problema é que quero de todos os usuários e não colocar um determinado 
usuário. O que fiz foi comentar as cláusulas 
WHERE grantee=UPPER('username'), para me mostrar tudo e colocar o grantee 
no SELECT. Ficou muito tosco, não me mostra os usuários só as roles e seus 
determinados privilégios, e acabei sem identificar os usuários, poderia me 
ajudar? Realmente esse select nao consegui modificar de acordo com a minha 
necessidade.
 
  


Em Terça-feira, 10 de Junho de 2014 11:32, jlchia...@yahoo.com.br [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:
  


  
Bem, vc não diz mas em primeiro lugar, entendo que vc está focando nos 
privilégios de sistema : obviamente, um privilégio de acesso/DDL/DML impróprio 
nas tabelas do aplicativo pode ** detonar ** o aplicativo, deixando-o fora de 
combate rapidinho, mas isso vai ser tratado/está sendo tratado numa outra 
atuação...
 Com isso em mente, eu diria :
 
 a) faltam aí checar os privilégios UNLIMITED TABLESPACE (que permite criar 
objs na tablespace SYSTEM, talvez até eventualmente lotando-a e assim 
derrubando o banco, ou no mínimo causando problemas de 
performance/administração), de DEBUG, ADMINISTER, , de FLASHBACK e de EXPORT :  
em tese não se derruba um banco com eles MAS podem causar lentidão e pros de 
acesso se mal-usados
 
 b) falta checar os privilégios de EXECUTE nas packages internas pertencentes 
ao SYS e aos schemas internos (algumas dessas são mega-poderosas, com LARGA 
margem para exploit
 
 c) muito importante : falta checar os privilégios de sistema recebidos por 
ROLES, principalmente a role DBA e as roles de operadores do database : 
acredite ou não, ainda hoje vc encontra aplicativo que exige que o usuário 
dono das tabs dele receba role de DBA, de DBOPER, ou coisa assim...
 
  []s
  
    Chiappa
    
OBS : = vc pode se basear no script abaixo, que lista TODOS os privs, seja 
recebidos diretamente, seja por role, seja privs de execute, adapte-o pra sua 
necessiadde...


set echo off
set verify off
set pages 
col granted_role form a28
col owner form a15
col table_name form a33
col privilege form a33
ACCEPT username  prompt 'Enter Username : '
PROMPT Roles granted to user
SELECT granted_role,admin_option,default_role
FROM dba_role_privs
WHERE grantee=UPPER('username')
ORDER BY 1;
PROMPT Table Privileges granted to a user through roles
SELECT granted_role, owner, table_name, privilege
FROM ( SELECT granted_role
    FROM dba_role_privs WHERE grantee=UPPER('username')
   UNION
   SELECT granted_role
    FROM role_role_privs
    WHERE role in (SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER('username')
    )
   ) roles, dba_tab_privs
WHERE granted_role=grantee
ORder by 1,2,3,4;
PROMPT System Privileges assigned to a user through roles
SELECT granted_role, privilege
FROM ( SELECT granted_role
    FROM dba_role_privs WHERE grantee=UPPER('username')
   UNION
   SELECT granted_role
    FROM role_role_privs
    WHERE role in (SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER('username')
    )
   ) roles, dba_sys_privs
WHERE granted_role=grantee
 ORDER BY 1,2;
PROMPT Table privileges assigned directly to a user
SELECT owner, table_name, privilege
FROM dba_tab_privs
WHERE grantee=UPPER('username')
ORDER BY 1,2,3;
PROMPT System privileges assigned directly to a user
SELECT privilege, admin_option
FROM  dba_sys_privs
WHERE grantee=UPPER('username') ORDER BY 1;
undefine username
/  
 

Re: [oracle_br] Re: Usuários com privilégios arriscados

2014-06-10 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
Uma outra coisa é que também não consigo mais copiar/selecionar os textos aqui 
no grupo, só está acontecendo comigo?  


Em , Rafael Mendonca raffaell.t...@yahoo.com escreveu:
  


Chiappa, não consegui realizar a consulta com a sua query:

Primeira observação:

 PROMPT System privileges assigned directly to a user 

Essa consulta mostra todos os privilegios dados diretamente pros usuarios, 
inclusive para as ROLES.

Que é a que eu tinha feito no primeiro tópico, beleza (:

O problema é que agora preciso dos privilégios dos usuários dados através de 
ROLES, que seria essa que você mandou:

 SELECT granted_role, privilege
 FROM ( SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER('username')
 UNION
 SELECT granted_role
 FROM role_role_privs
 WHERE role in (SELECT
 granted_role
 FROM dba_role_privs WHERE grantee=UPPER
 ('username')
 )
 ) roles, dba_sys_privs
 WHERE granted_role=grantee
 ORDER BY 1,2;
 PROMPT Table privileges assigned directly to a user
 SELECT owner, table_name, privilege
 FROM dba_tab_privs
 WHERE grantee=UPPER('username')
 ORDER BY 1,2,3;


Só que o problema é que quero de todos os usuários e não colocar um determinado 
usuário. O que fiz foi comentar as cláusulas 
WHERE grantee=UPPER('username'), para me mostrar tudo e colocar o grantee 
no SELECT. Ficou muito tosco, não me mostra os usuários só as roles e seus 
determinados privilégios, e acabei sem identificar os usuários, poderia me 
ajudar? Realmente esse select nao consegui modificar de acordo com a minha 
necessidade.




Em Terça-feira, 10 de Junho de 2014 11:32, jlchia...@yahoo.com.br [oracle_br] 
oracle_br@yahoogrupos.com.br escreveu:
  


  
Bem, vc não diz mas em primeiro lugar, entendo que vc está focando nos 
privilégios de sistema : obviamente, um privilégio de acesso/DDL/DML impróprio 
nas tabelas do aplicativo pode ** detonar ** o aplicativo, deixando-o fora de 
combate rapidinho, mas isso vai ser tratado/está sendo tratado numa outra 
atuação...
 Com isso em mente, eu diria :
 
 a) faltam aí checar os privilégios UNLIMITED TABLESPACE (que permite criar 
objs na tablespace SYSTEM, talvez até eventualmente lotando-a e assim 
derrubando o banco, ou no mínimo causando problemas de 
performance/administração), de DEBUG, ADMINISTER, , de FLASHBACK e de EXPORT :  
em tese não se derruba um banco com eles MAS podem causar lentidão e pros de 
acesso se mal-usados
 
 b) falta checar os privilégios de EXECUTE nas packages internas pertencentes 
ao SYS e aos schemas
 internos (algumas dessas são mega-poderosas, com LARGA margem para exploit
 
 c) muito importante : falta checar os privilégios de sistema recebidos por 
ROLES, principalmente a role DBA e as roles de operadores do database : 
acredite ou não, ainda hoje vc encontra aplicativo que exige que o usuário 
dono das tabs dele receba role de DBA, de DBOPER, ou coisa assim...
 
  []s
  
    Chiappa
    
OBS : = vc pode se basear no script abaixo, que lista TODOS os privs, seja 
recebidos diretamente, seja por role, seja privs de execute, adapte-o pra sua 
necessiadde...


set echo off
set verify off
set pages 
col granted_role form a28
col owner form a15
col table_name form a33
col privilege form a33
ACCEPT username  prompt 'Enter Username : '
PROMPT Roles granted to user
SELECT granted_role,admin_option,default_role
FROM dba_role_privs
WHERE grantee=UPPER('username')
ORDER BY 1;
PROMPT Table Privileges granted to a user through roles
SELECT granted_role, owner, table_name, privilege
FROM ( SELECT granted_role
    FROM dba_role_privs WHERE grantee=UPPER('username')
   UNION
   SELECT granted_role
    FROM role_role_privs
    WHERE role in (SELECT granted_role
 FROM dba_role_privs WHERE grantee=UPPER('username')
    )
   ) roles, dba_tab_privs
WHERE granted_role=grantee
ORder by 1,2,3,4;
PROMPT System Privileges assigned to a user through roles
SELECT granted_role, privilege
FROM ( SELECT granted_role
    FROM dba_role_privs WHERE grantee=UPPER('username')
   UNION
   SELECT granted_role
    FROM role_role_privs
    WHERE role in (SELECT granted_role
 FROM
 dba_role_privs WHERE grantee=UPPER('username')
    )
   ) roles, dba_sys_privs
WHERE granted_role=grantee
 ORDER BY 1,2;
PROMPT Table privileges assigned directly to a user
SELECT owner, table_name, privilege
FROM dba_tab_privs
WHERE grantee=UPPER('username')
ORDER BY 1,2,3;
PROMPT System privileges assigned directly to a user
SELECT privilege, admin_option
FROM  dba_sys_privs
WHERE grantee=UPPER('username') ORDER BY 1;
undefine username
/