Microsoft SQL Server漏洞浅析
0x01 Microsoft SQL Server数据库简介
Microsoft SQL Server是微软公司推出的关系型数据库管理系统,因其具有使用方便与可伸缩性好,且与相关软件集成程度高等优点,从而被广泛使用。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理对高可用和高性能有需求的业务业务场景。
目前Microsoft SQL Server数据库在全球的应用量也比较靠前,据统计,在全球范围内对互联网开放Microsoft SQL Server数据库服务的资产数量多达237,065台,发现中国地区对外开放的Microsoft SQL Server数据库服务数量排名第一,数量为75793台,接近全球总量的30%。排名第二与第三的分别是美国与荷兰地区,其对外开放的Microsoft SQL Server数据库服务数量分别为35,965台和33,664台。由此看来,国内使用Microsoft SQL Server数据库的用户很广泛,对Microsoft SQL Server数据库的漏洞防范就显得尤为重要了。
(统计数据仅为对互联网开放的资产,本数据来源于FOFA。)
0x02 Microsoft SQL Server漏洞概述
近几年Microsoft SQL Server数据库爆发的漏洞数量与其它类型数据库相比,所暴露出来的漏洞相对较少。在此,挑选两个可利用性高,且具有代表性的漏洞进行分析,分析列表如下:
0x03 Microsoft SQL Server漏洞分析
1、CVE-2008-5416 漏洞分析
一、漏洞信息:
二、漏洞概述:
Microsoft SQL Server是一款流行的SQL数据库系统。Microsoft SQL Server的sp_replwritetovarbin扩展存储过程中存在堆溢出漏洞,如果远程攻击者在参数中提供了未初始化变量的话,就可以触发这个溢出,向可控的位置写入内存,导致已有漏洞SQL Server进程的权限执行任意代码。在默认的配置中,任何用户都可以访问sp_replwritetovarbin过程。通过认证的用户可以通过直接的数据库连接或SQL注入来利用这个漏洞。
三、漏洞影响:
· Microsoft SQL Server 受CVE-2008-5416漏洞影响的版本如下:
· MSSQL 2000 / MSDE SP0 (8.00.194)
· MSSQL 2000 / MSDE SP1 (8.00.384)
· MSSQL 2000 / MSDE SP2 (8.00.534)
· MSSQL 2000 / MSDE SP3 (8.00.760)
· MSSQL 2000 / MSDE SP4 (8.00.2039)
· MSSQL 2005 SP0 (9.00.1399.06)
· MSSQL 2005 SP1 (9.00.2047.00)
· MSSQL 2005 SP2 (9.00.3042.00)
四、漏洞分析:
1、CVE-2008-5416漏洞PoC利用代码分析:
我们从互联网中找到了CVE-2008-5416漏洞PoC,如下是漏洞PoC利用代码片段:
DECLARE @buf NVARCHAR(4000),
@val NVARCHAR(4),
@counter INT
SET @buf = '
declare @retcode int,
@end_offset int,
@vb_buffer varbinary,
@vb_bufferlen int,
@buf nvarchar;
exec master.dbo.sp_replwritetovarbin 1,
@end_offset output,
@vb_buffer output,
@vb_bufferlen output,'''
SET @val = CHAR(0x41)
SET @counter = 0
WHILE @counter
通过PoC代码可以看出,先定义未初始化的自定义变量,然后传入超长数据段(数据段中可构造恶意攻击代码),通过sp_replwritetovarbin扩展在存储过程中进行堆溢出,将构造的攻击代码写入内存并执行。
2、CVE-2008-5416漏洞攻击流量分析:
攻击者TDS协议对靶机发起远程登陆认证请求,因为该漏洞只有远程认证成功后才可以进一步被利用。如下所示:
当登陆请求认证成功后,进一步查询数据库服务器的版本信息。如下所示:
在确定数据库系统的版本信息后,再进一步选择对应的攻击PayLoad载荷,进行存储过程溢出攻击。如下所示:
五、漏洞验证:
通过Metasploit渗透测试框架对存在CVE-2008-5416漏洞的靶机进行测试,发现可以利用成功。如下图所示:
六、漏洞修复建议:
Microsoft已经为此发布了一个安全公告(MS09-004)以及相应补丁。链接如下:
https://docs.microsoft.com/zh-cn/security-updates/Securitybulletins/2009/ms09-004
2、CVE-2005-4145漏洞分析:
一、漏洞信息:
· 漏洞名称:Lyris ListManager MSDE Weak SA Password Vulnerability
· 漏洞编号:CVE-2005-4145
· 漏洞类型:Weak Password Vulnerability
二、漏洞概述:
Lyris_technologies_inc Listmanager是Microsoft SQL Server MSDE中的一款重要组件,由于Lyris_technologies_inc Listmanager 5.0 – 8.9b版本中存在将数据库的SA帐户配置为使用具有小型搜索空间的密码的设计缺陷,导致攻击者可远程通过暴力破解攻击获取Microsoft SQL Server数据库的访问权。
0x01 Microsoft SQL Server数据库简介
Microsoft SQL Server是微软公司推出的关系型数据库管理系统,因其具有使用方便与可伸缩性好,且与相关软件集成程度高等优点,从而被广泛使用。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理对高可用和高性能有需求的业务业务场景。
目前Microsoft SQL Server数据库在全球的应用量也比较靠前,据统计,在全球范围内对互联网开放Microsoft SQL Server数据库服务的资产数量多达237,065台,发现中国地区对外开放的Microsoft SQL Server数据库服务数量排名第一,数量为75793台,接近全球总量的30%。排名第二与第三的分别是美国与荷兰地区,其对外开放的Microsoft SQL Server数据库服务数量分别为35,965台和33,664台。由此看来,国内使用Microsoft SQL Server数据库的用户很广泛,对Microsoft SQL Server数据库的漏洞防范就显得尤为重要了。
无奈人生安全网
(统计数据仅为对互联网开放的资产,本数据来源于FOFA。)
0x02 Microsoft SQL Server漏洞概述
近几年Microsoft SQL Server数据库爆发的漏洞数量与其它类型数据库相比,所暴露出来的漏洞相对较少。在此,挑选两个可利用性高,且具有代表性的漏洞进行分析,分析列表如下:
0x03 Microsoft SQL Server漏洞分析
1、CVE-2008-5416 漏洞分析
一、漏洞信息:
二、漏洞概述:
Microsoft SQL Server是一款流行的SQL数据库系统。Microsoft SQL Server的sp_replwritetovarbin扩展存储过程中存在堆溢出漏洞,如果远程攻击者在参数中提供了未初始化变量的话,就可以触发这个溢出,向可控的位置写入内存,导致已有漏洞SQL Server进程的权限执行任意代码。在默认的配置中,任何用户都可以访问sp_replwritetovarbin过程。通过认证的用户可以通过直接的数据库连接或SQL注入来利用这个漏洞。 无奈人生安全网
三、漏洞影响:
· Microsoft SQL Server 受CVE-2008-5416漏洞影响的版本如下:
· MSSQL 2000 / MSDE SP0 (8.00.194)
· MSSQL 2000 / MSDE SP1 (8.00.384)
· MSSQL 2000 / MSDE SP2 (8.00.534)
· MSSQL 2000 / MSDE SP3 (8.00.760)
· MSSQL 2000 / MSDE SP4 (8.00.2039)
· MSSQL 2005 SP0 (9.00.1399.06)
· MSSQL 2005 SP1 (9.00.2047.00)
· MSSQL 2005 SP2 (9.00.3042.00)
四、漏洞分析:
1、CVE-2008-5416漏洞PoC利用代码分析:
我们从互联网中找到了CVE-2008-5416漏洞PoC,如下是漏洞PoC利用代码片段:
DECLARE @buf NVARCHAR(4000),
@val NVARCHAR(4),
@counter INT
SET @buf = '
declare @retcode int,
@end_offset int,
@vb_buffer varbinary,
@vb_bufferlen int,
@buf nvarchar;
exec master.dbo.sp_replwritetovarbin 1,
@end_offset output,
@vb_buffer output,
@vb_bufferlen output,'''
SET @val = CHAR(0x41)
SET @counter = 0
内容来自无奈安全网
WHILE @counter
通过PoC代码可以看出,先定义未初始化的自定义变量,然后传入超长数据段(数据段中可构造恶意攻击代码),通过sp_replwritetovarbin扩展在存储过程中进行堆溢出,将构造的攻击代码写入内存并执行。
2、CVE-2008-5416漏洞攻击流量分析:
攻击者TDS协议对靶机发起远程登陆认证请求,因为该漏洞只有远程认证成功后才可以进一步被利用。如下所示:
当登陆请求认证成功后,进一步查询数据库服务器的版本信息。如下所示:
在确定数据库系统的版本信息后,再进一步选择对应的攻击PayLoad载荷,进行存储过程溢出攻击。如下所示:
www.wnhack.com
五、漏洞验证:
通过Metasploit渗透测试框架对存在CVE-2008-5416漏洞的靶机进行测试,发现可以利用成功。如下图所示:
六、漏洞修复建议:
Microsoft已经为此发布了一个安全公告(MS09-004)以及相应补丁。链接如下:
https://docs.microsoft.com/zh-cn/security-updates/Securitybulletins/2009/ms09-004
2、CVE-2005-4145漏洞分析:
一、漏洞信息:
· 漏洞名称:Lyris ListManager MSDE Weak SA Password Vulnerability
· 漏洞编号:CVE-2005-4145
· 漏洞类型:Weak Password Vulnerability
二、漏洞概述:
Lyris_technologies_inc Listmanager是Microsoft SQL Server MSDE中的一款重要组件,由于Lyris_technologies_inc Listmanager 5.0 – 8.9b版本中存在将数据库的SA帐户配置为使用具有小型搜索空间的密码的设计缺陷,导致攻击者可远程通过暴力破解攻击获取Microsoft SQL Server数据库的访问权。
无奈人生安全网