Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security DBO权利风险_Security_Dbo - Fatal编程技术网

Security DBO权利风险

Security DBO权利风险,security,dbo,Security,Dbo,我建议一位朋友管理一个SQL2K5框,该框有多个用户可以通过dbo访问多个数据库。问题是: 这些用户已经几个月没有更改密码了 这些用户将其ID放入应用程序中,应用程序作为DBO运行 那么-除了添加/更新/删除表和进程的明显dbo权限之外,对于将dbo添加到SQL 2005数据库的恶意用户,我还能举出什么危险呢 我想提供对数据库和其他用户造成伤害的特定场景。dbo能否更改服务器上的文件分配?DBO会影响其他未直接连接到该数据库的资源吗 作为澄清,这是SQL Server 2005,默认情况下xp

我建议一位朋友管理一个SQL2K5框,该框有多个用户可以通过dbo访问多个数据库。问题是:

  • 这些用户已经几个月没有更改密码了
  • 这些用户将其ID放入应用程序中,应用程序作为DBO运行
  • 那么-除了添加/更新/删除表和进程的明显dbo权限之外,对于将dbo添加到SQL 2005数据库的恶意用户,我还能举出什么危险呢

    我想提供对数据库和其他用户造成伤害的特定场景。dbo能否更改服务器上的文件分配?DBO会影响其他未直接连接到该数据库的资源吗



    作为澄清,这是SQL Server 2005,默认情况下xp_cmdShell未授权给DBO用户。我还在想,除了明显的积垢之外,是否还有其他风险。有人能用DBO做什么?

    是的。dbo有权对数据库执行任何它想要的操作。甚至可以运行xp_cmdshell。一旦您可以运行xp_cmdshell,您就可以在系统上执行几乎任何操作。
    如果dbo拥有系统管理员权限,这一切都是可能的。默认情况下,dbo拥有系统管理员权限。

    我知道这是一篇5年前的文章,但从来没有得到正确的回答,而且发布了一些非常糟糕的信息

    首先,让我们看看在线图书对“DBO”角色(priv)的看法。重点是我的

    db_所有者固定数据库角色的成员可以执行所有 数据库上的配置和维护活动

    总而言之,这意味着拥有“DBO”权限的人可以对拥有该权限的任何数据库做任何他们想做的事情。从2005年起,这也意味着他们可以删除该数据库

    还要注意的是,它并没有说能够控制服务器是一件非常糟糕的事情。据我记忆所及,执行xp_CmdShell需要“SA”或(最近)需要“Control Server”priv。DBO既没有priv也没有priv,因此它不能运行xp\u CmdShell,也不能运行许多以“xp\u”甚至“sp\u”开头的其他东西

    换档,正如OP似乎已经意识到的那样,DBO privs被认为是“高架privs”。我建议您不要向应用程序(或其他前端)授予DBO权限,我只会将其授予负责数据库管理员的人员。这些人需要像您选择DBA的人一样明智地选择


    要回答有关积垢的其他问题。。。在ORM执行CRUD的大多数情况下,最需要提升的PRIV是db_DataReader和db_DataWriter。老实说,我甚至不希望登录时拥有这些特权。我知道世界上每一个前端开发人员都会对我大喊大叫,但事实是,即使是CRUD也应该由存储过程来完成,以防止攻击者利用db_DataWriter进入数据库,后者允许有人从表中删除数据。就我而言,应用程序(和其他前端)应该只有未修改的公共priv和用于执行某些存储过程的priv。。。句号。

    我同意杰夫的观点,即从最低特权的角度来看待这个问题。为了证明db_所有者比人们想象的更危险,请注意,它还允许攻击者:

    • 将其权限升级到sysadmin,从而接管整个服务器,包括服务器上的所有其他数据库[请参阅下面的参考资料,了解两种不同的方式]
    • 通过耗尽所有可用存储来执行拒绝服务
    • 使用所有RAM执行拒绝服务
    • 删除整个数据库
    参考资料:


    我知道这是一篇老文章,但是,对不起。。。那是绝对错误的!只有那些拥有“SA”或“Control Server”权限或(gasp!真是愚蠢的事情)被授予代理权限直接运行它的登录才能运行xp\u CmdShell。这是我在你的文章中看到的第二篇含有错误信息的文章。你从哪里得到这个信息的?我这样问是因为无论是谁提供的都需要更正。5年前我知道的比现在少。太棒了,你纠正了我。:)