• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
永不言弃,简单就好
每一个付出,都有回报,永远不放弃
博客园    首页    新随笔    联系   管理    订阅  订阅
ORACLE 查询DBLINK中设定的密码

private的db link可以查到密码, public 的dblink 也可以看到密码。只是需要用sys用户登录查询。 

查询dblink的user 密码,用sys 登陆

SELECT * FROM SYS.link$;

SELECT *

 FROM SYS.link$ l, SYS.user$ u

 WHERE l.owner# IN (SELECT kzsrorol

                      FROM x$kzsro) AND l.owner# = u.user#;

如果是private 的dblink,就可以用owner登录,查询 user_db_links

Select * from user_db_links;

 

 

 

db link泄露密码的处理

在Oracle 10g前,我们可以通过查看user_db_links视图,来查看到本用户下建立的db link的
username
和password.原因比较简单,可以认为是Oracle的一个安全漏洞。我们看看user_db_links的创建过程就明白了:
create
or replace view user_db_links(db_link, username, password, host, created)

as

select l.name, l.userid, l.password, l.host, l.ctime
from sys
.link$ l
where l
.owner# = userenv('SCHEMAID')
select * from link$
user_db_links视图来源于sys.link$字典表,而在10g前, 对拥有select any table权限的用户来说,是可以访问link$表的。所以要想规避这个漏洞,必须做如下2个操作
1
)revoke select any table 或更高级的权限或角色[比如DBA等]
2)重建user_db_link视图
create
or replace view user_db_links(db_link, username,host, created)

as

select l.name, l.userid, l.host, l.ctime from sys.link$ l where l.owner# = userenv('SCHEMAID')

在Oracle 10g中,Oracle公司也认识到了这个bug,修正了sys.link$的访问权限,除非拥有sysdba权限,否则谁也访问不了。在user_db_links也看不到password

posted on 2010-03-30 12:47  嘎子  阅读(5182)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3