Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
0x00 前言
本文以CVE-2023-27532為例,介紹Veeam Backup & Replication漏洞調(diào)試環(huán)境的搭建方法。
0x01 簡介
本文將要介紹以下內(nèi)容:
環(huán)境搭建
調(diào)試環(huán)境搭建
數(shù)據(jù)庫憑據(jù)提取
CVE-2023-27532簡要分析
0x02 環(huán)境搭建
1.軟件安裝
安裝文檔:https://helpcenter.veeam.com/archive/backup/110/vsphere/install_vbr.html
軟件下載地址:https://www.veeam.com/download-version.html
License申請地址:https://www.veeam.com/smb-vmware-hyper-v-essentials-download.html
下載得到iso文件,安裝時(shí)需要使用郵箱獲得的License文件
2.默認(rèn)目錄
安裝目錄:C:\Program Files\Veeam\
日志路徑:C:\ProgramData\Veeam\Backup
3.默認(rèn)端口
Veeam.Backup.Service ports: 9392,9401(SSL)
Veeam.Backup.ConfigurationService port: 9380
Veeam.Backup.CatalogDataService port: 9393
Veeam.Backup.EnterpriseService port:9394
Web UI ports: 9080,9443(SSL)
RESTful API ports: 9399,9398(SSL)
0x03 調(diào)試環(huán)境搭建
1.定位進(jìn)程
執(zhí)行命令:netstat -ano |findstr 9401
返回結(jié)果:
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
定位到進(jìn)程pid為7132,進(jìn)程名稱為Veeam.Backup.Service.exe
使用dnSpy Attach到進(jìn)程Veeam.Backup.Service.exe
2.調(diào)試設(shè)置
為了在Debug過程中能夠查看變量內(nèi)容,需要?jiǎng)?chuàng)建以下文件:
C:\Program Files\Veeam\Backup and Replication\Backup\Veeam.Backup.Service.ini
C:\Program Files\Veeam\Backup and Replication\Backup\Veeam.Backup.DBManager.ini
C:\Program Files\Veeam\Backup and Replication\Backup\Veeam.Backup.ServiceLib.ini
C:\Program Files\Veeam\Backup and Replication\Backup\Veeam.Backup.Interaction.MountService.ini
內(nèi)容為:
0x04 數(shù)據(jù)庫憑據(jù)提取
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
1.獲得數(shù)據(jù)庫連接配置
(1)獲得數(shù)據(jù)庫連接端口
打開SQL Server 2016 Configuration Manager,選擇SQL Server Services,可以看到SQL Server(VEEAMSQL2016)對應(yīng)的Process ID為1756,如下圖
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
查看進(jìn)程對應(yīng)的端口:netstat -ano|findstr 1756
返回結(jié)果:
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
得到連接端口49720
(2)獲得數(shù)據(jù)庫名稱
方法1:
進(jìn)入Configuration Database Connection Settings,在頁面中可以看到Database name為VeeamBackup,認(rèn)證方式為Windows Authentication,如下圖
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
方法2:
讀取注冊表鍵值:REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Veeam\Veeam Backup and Replication" /v SqlDatabaseName
2.數(shù)據(jù)庫連接
(1)使用界面程序
這里使用DbSchema
選擇SqlServer,配置如下圖
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
成功連接如下圖
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
數(shù)據(jù)庫選擇VeeamBackup.dbo,進(jìn)入數(shù)據(jù)庫頁面,全局搜索關(guān)鍵詞password,得到相關(guān)的查詢語句:
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
執(zhí)行后獲得數(shù)據(jù)庫存儲(chǔ)的憑據(jù)信息,如下圖
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
(2)使用Powershell
參考資料:https://github.com/sadshade/veeam-creds
veeam-creds在Veeam Backup and Replication 11及更高版本測試時(shí)會(huì)報(bào)錯(cuò),提示:
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
這是因?yàn)閔ttps://github.com/sadshade/veeam-creds/blob/main/Veeam-Get-Creds.ps1#L32處使用了sqloledb,當(dāng)前系統(tǒng)的sqloledb已經(jīng)過期
這里可以選擇使用MSOLEDBSQL或MSOLEDBSQL19解決
查看當(dāng)前系統(tǒng)是否安裝MSOLEDBSQL或MSOLEDBSQL19的Powershell命令:(New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
返回結(jié)果示例:
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
以上結(jié)果顯示當(dāng)前系統(tǒng)安裝了MSOLEDBSQL19,所以只需要將sqloledb替換為MSOLEDBSQL19即可
補(bǔ)充:安裝MSOLEDBSQL或MSOLEDBSQL19的方法
下載地址:https://learn.microsoft.com/en-us/sql/connect/oledb/download-oledb-driver-for-sql-server?source=recommendations&view=sql-server-ver16
命令行安裝方法:msiexec /i msoledbsql.msi /qn IACCEPTMSOLEDBSQLLICENSETERMS=YES
安裝前需要滿足Microsoft Visual C++ Redistributable版本最低為14.34
查看Microsoft Visual C++ Redistributable版本的簡單方法:
通過文件夾名稱獲得:dir /o:-d "C:\ProgramData\Package Cache"
返回結(jié)果示例:
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
從中可以得出Microsoft Visual C++ Redistributable版本為14.29.30037,需要安裝更高版本的Microsoft Visual C++ Redistributable,下載地址:https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170
x86和x64均需要安裝,veeam-creds運(yùn)行成功如下圖
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
0x05 CVE-2023-27532簡要分析
Y4er公布了調(diào)用CredentialsDbScopeGetAllCreds獲得明文憑據(jù)的POC:https://y4er.com/posts/cve-2023-27532-veeam-backup-replication-leaked-credentials/
1.憑據(jù)位置
此處的明文憑據(jù)對應(yīng)的位置為:Veeam Backup & Replication Console->Manage Credentials,默認(rèn)明文口令為空,如下圖
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
調(diào)試斷點(diǎn)位置為Veeam.Backup.DBManager.dll->CCredentialsDbScope,如下圖
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
2.數(shù)據(jù)解析
POC最終的返回結(jié)果為序列化之后的xml,將ParamValue作Base64解密后可以看到明文數(shù)據(jù),但是格式不對,存在亂碼
這里可以調(diào)用Veeam自帶的dll反序列化數(shù)據(jù),得到正確的格式
格式化輸出字符串的代碼示例:
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
需要引用dll文件:
Veeam.Backup.Common.dll
Veeam.Backup.Configuration.dll
Veeam.Backup.Interaction.MountService.dll
Veeam.Backup.Logging.dll
Veeam.Backup.Model.dll
Veeam.Backup.Serialization.dll
Veeam.TimeMachine.Tool.dll
編譯生成的文件需要在本地安裝Veeam的環(huán)境下使用,否則報(bào)錯(cuò)提示:
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
程序成功執(zhí)行的結(jié)果示例如下圖
【技術(shù)原創(chuàng)】Veeam Backup & Replication漏洞調(diào)試環(huán)境搭建
0x06 小結(jié)
本文以CVE-2023-27532為例,介紹搭建Veeam Backup & Replication漏洞調(diào)試環(huán)境的相關(guān)問題和解決方法。