日期:2011-05-02 15:20:00 来源:本站整理
<b>SQL SERVER数据库口令的脆弱性</b>[MSSQL防范]
本文“<b>SQL SERVER数据库口令的脆弱性</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
跟踪了一下sql server数据库服务器的登录历程,发现口令计算是非常脆弱的,SQL SERVER数据库的口令脆弱表现两方面:
1、网络登陆时刻的口令加密算法
2、数据库存储的口令加密算法.
下面就辨别报告:
1、网络登陆时刻的口令加密算法
SQL SERVER网络加密的口令一向都非常脆弱,网上有很多写出来的对比表,但是都没有具体的算法处理,实际上跟踪一下SQL
SERVER的登陆历程,就很简单获得其解密的算法:好吧,我们还是演示一下汇编流程:
登录范例的TDS包跳转到4126a4处履行:
004DE72E:按照接纳到的大小字段生成对应大小的缓冲区举行下一步的拷贝
004DE748从接纳到的TDS BUF偏移8处拷贝出LOGIN的信息
004DE762:call sub_54E4D0:将新拷贝的缓冲压入举行参数查抄的处理
顺次处理TDS包中的信息,各个字段气候都应当有各个域的长度,偏移0X24处与长度举行对比.
下面这段汇编代码就是实现对网络加密密码解密的算法:
|
很简单就将其换成为C代码,可以看出其加密及其简单,和明文没什么辨别,呵呵,大家可以在SNIFFER中嵌入这段代码对嗅叹到的TDS登陆包举行解密,其实0XA5不是特定的SQL SERVER密码字段的分界标记,只是由于加密算法会自动把ASC的双字节表示的0x0加密成0xa5罢了,但是假如答应双字节口令,这个就不是判断其分界的主要缘由了.
|
[1] [2] 下一页
2、数据库存储的口令加密算法
SQL SERVER的口令到数据库存储的加密办法,也是让人独特的.其历程以下:
在得到网络解密密码的口令今后在005F9D5A处call SQLSORT_14,实现一个转换为大写口令缓冲举行保存.
然后在004def6d处调用一个函数取出数据库中的加密的PASSword,其情势以下:
|
如我取出的一个例子:
|
SQL首先用4个字节的HASH加秘KEY补上其两处口令的缓冲,一个为大写,一个为小写.然后其加密历程以下C函数:
|
取出passwdbuf是大写的passwd的加密值这两个相加就是真正的数据库中的PASSWORD加密字段.
为什么说以上办法是脆弱的呢?其实其真正的加密长度生成只有20个字节.
小写口令的HASH1+大写口令的HASH1拼接的40位HASH值的安全度还不如一个直接20位的HASH值来得安全.因为大家都知道这两个值的因果关系,
供应应理解密者更多的信息.
如因为其算法一样,假如HASH1=HASH2,便可以判断口令必定是未利用字母,只利用了数字和标记的口令,如上取出的123456口令的HASH,两个HASH完好相等.
就是利用了字母,其知道增补的KEY,算法,两个加密字串的关系,其解应当也是大大的简化了.
上一页 [1] [2]
以上是“<b>SQL SERVER数据库口令的脆弱性</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论