- Este tópico contém 6 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 11 meses atrás por
dbcana.
-
AutorPosts
-
13 de abril de 2009 às 8:30 pm #86213
dbcana
ParticipanteBuenas!
Primeiramente permitam que me apresente, já que este é meu primeiro post: Daniel Caña, 32 anos, desenvolvedor WEB (PHP) com aspirações de seguir carreira como DBA Oracle, residente na grande Porto Alegre/RS.
Bueno, o motivo do post é que acidentalmente me deparei com uma falha de segurança no OracleXE que não consigo corrigir.
Um amigo que tem um XE instalado em sua empresa demitiu seu ‘DBA’ (entenderão o pq das aspas no relato) e este último não deixou a senha do usuário SYS. Sabendo que eu havia feito curso de DBA Oracle, meu amigo solicitou meu auxílio.
Até aí tudo OK, gerei no servidor um novo arquivo pwd e me loguei como sysdba. Alterei a senha do user sys, executei as verificações de rotina (botei o banco em modo archive, multiplexei controlfile, datafiles e redologs, verifiquei os arquivos de trace e alert e por último fiz um backup – que até então não havia ¬¬).
Após deixar o banco redondo, fui verificar seu funcionamento como um usuário normal. Porém, ao efetuar o login no SQLPlus (por puro costume e por conta do vício de digitação, confesso) coloquei após a senha um ‘as sysdba’ e dei um enter. Obviamente, após dar o enter e me dar por conta da ‘boca-abertice’, comecei a me auto-flagelar verbalmente (hehehe) mas, para meu espanto, recebi a resposta do SQLPlus ‘connected!’.
Verifiquei se aquilo estava correto e se o usuário tinha mesmo privilégios administrativos. TINHA! Fiz outros testes, com outros usuários, inventei senhas diferentes para o usuário sys e TODAS ERAM ACEITAS QUANDO ACOMPANHADAS DE ‘as sysdba’. O mais incrível, mesmo quando eu usava um nome de usuário inexistente este usuário era criado com privilégios administrativos.
Alguém saberia me dizer como corrigir este furo, digo, rombo de segurança?… Verifiquei a literatura do curso, mas não há nenhuma referência a um caso semelhante, apenas alusão ao parâmetro REMOTE_LOGIN_PASSWORDFILE que, independente de seu valor, não resolveu o problema.
Abraços,
Daniel
13 de abril de 2009 às 9:31 pm #86214Rodrigo Almeida
ParticipanteDaniel,
Sinceramente, eu ainda não conhecia essa brecha de segurança, e se realmente existe, é uma avenida e não uma brecha!!! rs rs.
Seguinte, somente para testes, qual a versão do seu Oracle XE (Universal, West Europe e etc), Release, e os seguintes valores de parÂmetros.
Qual o valor do parâmetro remote_login_passwordfile?
Qual o resultado do select * from v$pwfile_users;
Qual o comando para criar o arquivo de senha?E outra dúvida (da minha parte), se eu realizo as tarefas abaixo:
1) create user rodrigo identified by rodrigo;
2) grant create session to rodrigo;
3) DISCONNECT; <– MUITO IMPORTANTE
3) conn rodrigo/rodrigo@nome_do_tns as sysdba
4) shutdown immediate;
A sequência acima é possível realizar?
Caso contrário, se você se logou na máquina, e se conectou com SYS, automaticamente, tu pode colocar qualquer coisa, conn dadada/dedede as sysdba que vai conectar-se, e após isso, dê um show user, irá perceber que está como SYS. Mas tem explicação.
Abraços,[/b]
13 de abril de 2009 às 9:40 pm #86218Ishii
ParticipanteOlá,
Na verdade não sei classificar se é realmente uma brecha ou uma falha na instalação do XE. No caso do XE sobre Windows é criado um Grupo ORA_DBA e no Gerenciamento do Computador (Painel de Controle >> Ferramentas Administrativas >> Gerenciamento do Computador >> Ferramentas do Sistema >> Usuários e Grupos Locais >> Grupos – aff) você vai notar que existe um grupo ORA_DBA e que alguns usuários ou apenas o Adm da Máquina estão nele.
Com essa configuração a validação dos usuários é feito pela OS também e no caso do XE quando colocado a opção “as sysdba” informando apenas o slash “/” ou barra. Faça alguns testes:
1) Abra o prompt do DOS digite: sqlplus /nolog
2) No prompt do SQL digite: connect / as sysdba
3) Você estará conectado como SYS por que a autenticação foi feita pela validação do usuário no Grupo ORA_DBATeste 2
1) Vá no Grupo ORA_DBA (conforme o longo caminho acima) e remova todos os usuários
2) Tente novamente o teste acima… deve retornar mensagem de privilégios insuficientes… (se não retornar então o erro é mais grave ainda)O que acontece com essa validação via OS? Ele simplesmente ignora o user e o password e prevalece o slash e a expressão “as sysdba”. Se você notou ele sempre conecta como SYS….
Espero ter ajudado.
[]s Ishii
13 de abril de 2009 às 10:00 pm #86222Rodrigo Almeida
ParticipanteExatamente isso Ishi.
Por isso eu mandei ele forçar os testes passando por uma autenticação atráves do TNS.
Explicação perfeita.
Abraços,
Rodrigo Almeida
13 de abril de 2009 às 10:08 pm #86224dbcana
ParticipanteBuenas!
Realmente, o user está como SYS… E conferi o grupo de usuários com privilégios administrativos também (e sim, estou entre eles… huahuahua)
Grato pelo esclarecimento, Rodrigo e Ishii, vou tomar as providências para não permitir mais essa abertura.
Forte abraço,
Daniel
13 de abril de 2009 às 10:08 pm #86225Rodrigo Mesquita
ParticipanteAcredito que o problema é exatamente como o Ishi falou. Ele não está validando seu usuário e senha. Ele está validando pelo OS. Se vc tentar conectar por um cliente não irá conseguir.
Neste arquivo abaixo tem falando sobre a configuração do parametro responsável pela autenticação via os.
http://www.oracle-base.com/articles/mis … cation.php
13 de abril de 2009 às 10:26 pm #86229dbcana
ParticipanteBuenas!
Bá, Mesquita, teu post veio na hora certa… Eu ia mesmo perguntar como configurar se houvesse a mesma falha no Linux… hehehe
Abraços,
Daniel
-
AutorPosts
- Você deve fazer login para responder a este tópico.