oracle 查看过程的用户,排查oracle数据库中隐藏的用户过程演示以及原理分析

作为一个oracle运维人员,我们日常需要排查,看系统中的用户是否都是我们正在使用的用户,以防止有人恶意建立用户,从而使得业务数据的系统。 我们一般都是通过查询dba_users来查看当前系统中的用户。如:select username from dba_users;

其实这种并不能完全显示我们系统中存在的用户,我来做如下演示:SQL> select username from dba_users;

USERNAME

------------------------------

SYS

SYSTEM

SCOTT

OUTLN

MGMT_VIEW

MDSYS

ORDSYS

CTXSYS

ANONYMOUS

EXFSYS

DMSYS

USERNAME

------------------------------

DBSNMP

WMSYS

SYSMAN

XDB

ORDPLUGINS

SI_INFORMTN_SCHEMA

OLAPSYS

MDDATA

DIP

TSMSYS

21 rows selected.

SQL> conn xlh/oracle

Connected.

SQL> show user

USER is "XLH"

从这个演示过程中,我们不难发现,我们在DBA_USERS中检查是没有发现XLH这个用户的,而我们却用这个账户登录成功。

这个用户我们就称之为匿藏用户。

在这里我给大家提供一种检测隐藏用户的方法:SQL> select USER# AS USERID,NAME,TYPE# AS TYPE FROM SYS.USER$ WHERE TYPE#=1 AND (NAME NOT IN (SELECT USERNAME AS NAME FROM ALL_USERS) OR NAME NOT IN (SELECT USERNAME AS NAME FROM DBA_USERS) );

USERID NAME                                 TYPE

---------- ------------------------------ ----------

55 XLH                                     1

这里查询出来的即为匿藏用户,那我们就需要分析一下为什么会出现这种情况,首先我们取出DBA_USERS的定义:SQL> select dbms_metadata.get_ddl('VIEW','DBA_USERS','SYS') FROM dual;

DBMS_METADATA.GET_DDL('VIEW','DBA_USERS','SYS')

--------------------------------------------------------------------------------

CREATE OR REPLACE FORCE VIEW "SYS"."DBA_USERS" ("USERNAME", "USER_ID", "PASSWO

RD", "ACCOUNT_STATUS", "LOCK_DATE", "EXPIRY_DATE", "DEFAULT_TABLESPACE", "TEMPOR

ARY_TABLESPACE", "CREATED", "PROFILE", "INITIAL_RSRC_CONSUMER_GROUP", "EXTERNAL_

NAME") AS

select u.name, u.user#, u.password,

。。。

。。。

and u.type# = 1

and u.resource$ = pr.profile#

and dp.profile# = 0

DBMS_METADATA.GET_DDL('VIEW','DBA_USERS','SYS')

--------------------------------------------------------------------------------

and dp.type#=1

and dp.resource#=1

and pr.type# = 1

and pr.resource# = 1

and u.name !='XLH'

注意看高亮部门,系统视图呗篡改,有木有?

这种情况下,我们需要将篡改的视图改回去,即可正常使用DBA_USERS来查询出所有的用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值