影响版本:
SQL Server 7.0
漏洞描述
使用一个很简单的策略,就可以随意的改变SQL 7.0服务器的SA(system administrator)的密码.MS SQL Server 7.0在master.mdf使用sysxlogins表对象保存登陆信息.它的password字段的类型是varbinary(256)。执行这样的一个查询"select name, convert(varchar(256), password) from sysxlogins"将返回和密码等价的字符串。有趣的是密码是被保存为16个字节的数值。所以如果密码少与16个字节也产生一个16个字节长的加密字符串。这个固定长度的密码被保存在sysxlogins表中的一个固定位置。.如果密码多与16个字符,那么前16个字符还是保存在同样的位置。所以我们只要这样一来做就可以改变这个SA管理帐号的密码:
a) 找到这个适当的加密字符
b) 找到在sysxlogins表中密码的偏移位置
c) 定位到记录sa
d) 替换password字段
证实过程
要成功的改变密码,SQL Server应该要在修改其间停止运行,并且你必须要拥有对SQL数据目录的读写访问权限。这的确限制了这个安全漏洞,但是使用其它的技术可以绕过这个限制。
合理运用这个方法,你也完全可以把它当成一个管理工具,一旦当你的SQL Server的SA密码丢失时,可以恢复数据库使用。
防范方法
由于这个漏洞必须是在SQL Server停止服务的时候才能够进行,最简单的办法就是严格保护你的系统中对DATA和BACKUP目录文件的访问权限。让服务器上的服务启动权限只有管理员帐号才能够拥有。但是有一种SQL Crash攻击可以让SQL Server停止服务。简要信息如下:
这种攻击方法被称为:“Malformed TDS Packet
SQL Server 7.0 sa帐号密码攻击法
最新推荐文章于 2020-12-22 18:14:00 发布
本文介绍了SQL Server 7.0的一个安全漏洞,允许攻击者在服务停止期间更改SA管理员账户的密码。通过利用sysxlogins表中密码的固定长度特性,攻击者可以修改密码。虽然需要对数据目录有读写权限且SQL Server需暂停服务,但存在绕过限制的可能。防范措施包括限制对数据和备份目录的访问权限以及安装针对‘Malformed TDS Packet Header’漏洞的补丁。建议使用Windows NT Authentication增强安全性。
摘要由CSDN通过智能技术生成