我正在将我的开发服务器与生产服务器进行比较,发现其中一个服务器有以下情况:
EXEC sp_grantdbaccess N'guest'
有人会如何利用连接字符串中的来宾用户?它似乎没有映射到登录。在 pubs 中,我看到来宾是公共成员。来宾似乎不可删除。
这是某种匿名访问帐户吗?如果这是一个安全问题,我该怎么做才能解决它?
答案1
如果 SQL Server 登录名没有其他方式进入数据库,则来宾用户允许该访问。您必须首先拥有有效的 SQL Server 登录名。无论授予来宾什么权限,该登录名都有权执行该操作。有几件事需要注意:
- 客人有哪些权限?
- 公共角色具有哪些权限(包括访客在内的所有用户都是该角色的成员)?
- 客人属于哪些角色以及这些角色具有哪些权限?
一般建议不要启用来宾用户。如果登录名应该有权访问数据库,最好授予显式访问权限。这样更容易审核。话虽如此,如果您查看一下,您会注意到系统数据库 master 和 msdb 已启用来宾用户。这是一项要求。
答案2
除了数据删除或其他恶意活动之外,首先想到的就是未经授权的用户访问您的数据。对于某些攻击者来说,有时重要的不是您可以破坏什么,而是您可以将什么复制到他们的系统上。如果他们可以复制您拥有的任何敏感数据,那么他们试图回来就没关系了 - 毕竟他们有自己的副本!在这种情况下,马几乎会被赶出马厩,事后封堵漏洞只能阻止其他尝试,而不能阻止已经窃取的数据的复制。